ElasticSearch 概念介绍和部署(上)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便。

1.ElasticSearch简介

1.1ElasticSearch(简称ES)



image.png


Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便。


客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。


官方网站:www.elastic.co


下载地址:www.elastic.co/cn/start


创始人: Shay Banon(谢巴农)


image.png


应用场景


image.png

1.2ElasticSearch与Lucene的关系


Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库(框架)


但是想要使用Lucene,必须使用Java来作为开发语言并将其直接集成到你的应用 中,并且Lucene的配置及使用非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。


Lucene缺点:


  1)只能在Java项目中使用,并且要以jar包的方式直接集成项目中.


  2)使用非常复杂-创建索引和搜索索引代码繁杂


  3)不支持集群环境-索引数据不同步(不支持大型项目)  


  4)索引数据如果太多就不行,索引库和应用所在同一个服务器,共同占用硬盘.共用空间少.


上述Lucene框架中的缺点,ES全部都能解决.

1.3哪些公司在使用Elasticsearch


image.png


国内公司:


1. 京东 
2. 携程 
3. 去哪儿 
4. 58同城 
5. 滴滴 
6. 今日头条 
7. 小米 
8. 哔哩哔哩 
9. 联想 


1.4ES  vs  Solr比较

1.4.1ES  vs  Solr  检索速度


当单纯的对已有数据进行搜索时,Solr更快。


image.png


当实时建立索引时, Solr会产生io阻塞,查询性能较差, Elasticsearch具有明显的优势。


image.png


大型互联网公司,实际生产环境测试,将搜索引擎从Solr转到 Elasticsearch以后的平均查询速度有了50倍的提升。



总结:


二者安装都很简单。


1、Solr 利用 Zookeeper 进行分布式管理,而Elasticsearch 自身带有分布式协调管理功能。


2、Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。


3、Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。


4、Solr 是传统搜索应用的有力解决方案,但 Elasticsearch更适用于新兴的实时搜索应用。

1.4.2ES vs  关系型数据库


Elasticsearch VS RDBMS


RDBMS Database Table Row Column Schema SQL
Elasticsearch Index Index(Type) Document Filed Mapping DSL


说明:


  1. 在 7.0 之前, 一个 index 可以设置多个 types


  1. 目前 type 已经被 Deprecated, 7.0 开始,一个索引只能创建一个 Type -> "_doc"


  1. 传统关系型数据库和 Elasticesarch 的区别


  • Elasticsearch- Schemaless / 相关性 / 高性能全文检索


  • RDMS - 事务性 / Join

2.Lucene全文检索框架

2.1什么是全文检索


全文检索是指:


通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数


用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了

2.2分词原理之倒排索引


传统线性查找一个 10 MB 的 word ,查找关键字如果在文档的最后,大约需要 3 秒钟

倒排索引:记录每个词条出现在哪些文档,以及文档中的位置,可以根据词条快速定位到包含这些词条的文档以及文档的位置


  • 文档 (Document):索引库中每一条原始护具,例如一个网页信息,一件商品信息


  • 词条:原始数据按照算法进行分词,得到每一个词


创建倒排索引,分为以下几步:


1)创建文档列表:


l lucene首先对原始文档数据进行编号(DocID),形成列表,就是一个文档列表


image.png


2)创建倒排索引列表


l 然后对文档中数据进行分词,得到词条。对词条进行编号,以词条创建索引。然后记录下包含该词条的所有文档编号(及其它信息)。


image.png


谷歌之父--> 谷歌、之父


倒排索引创建索引的流程:


1) 首先把所有的原始数据进行编号,形成文档列表


2) 把文档数据进行分词,得到很多的词条,以词条为索引。保存包含这些词条的文档的编号信息。


搜索的过程:


当用户输入任意的词条时,首先对用户输入的数据进行分词,得到用户要搜索的所有词条,然后拿着这些词条去倒排索引列表中进行匹配。找到这些词条就能找到包含这些词条的所有文档的编号。


然后根据这些编号去文档列表中找到文档



相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
59 3
|
25天前
|
测试技术 API 开发工具
ElasticSearch核心概念:倒排索引
ElasticSearch核心概念:倒排索引
52 6
|
1月前
|
SQL 分布式计算 大数据
大数据-168 Elasticsearch 单机云服务器部署运行 详细流程
大数据-168 Elasticsearch 单机云服务器部署运行 详细流程
55 2
|
1月前
|
JSON 关系型数据库 API
ElasticSearch 的概念解析与使用方式(二)
ElasticSearch 的概念解析与使用方式(二)
25 1
|
1月前
|
存储 搜索推荐 Java
ElasticSearch 的概念解析与使用方式(一)
ElasticSearch 的概念解析与使用方式(一)
64 1
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
存储 运维 搜索推荐
运维开发.索引引擎ElasticSearch.倒序索引的概念
运维开发.索引引擎ElasticSearch.倒序索引的概念
53 1
|
3月前
|
Kubernetes 容器 Perl
k8s 部署 elasticsearch 单节点
k8s 部署 elasticsearch 单节点
|
3月前
|
JSON 测试技术 API
黑马商城 Elasticsearch从入门到部署 RestClient操作文档
这篇文章详细介绍了如何使用Java的RestHighLevelClient客户端与Elasticsearch进行文档操作,包括新增、查询、删除、修改文档以及批量导入文档的方法,并提供了相应的代码示例和操作步骤。
|
3月前
|
JSON 自然语言处理 Java
Elasticsearch从入门到部署 文档操作 RestAPI
这篇文章详细介绍了Elasticsearch中文档的增删改查操作,并通过Java的RestHighLevelClient客户端演示了如何通过REST API与Elasticsearch进行交云,包括初始化客户端、索引库的创建、删除和存在性判断等操作。
下一篇
无影云桌面