1-相关介绍

什么是Elasticsearch?

  Elasticsearch 是一个分布式的、RESTful 风格的、基于Lucene(Apache的开源搜索引擎类库,提供了搜索引擎的核心API)的开源搜索和数据分析引擎。可以帮助我们从海量数据中快速找到需要的内容。

官网地址: https://www.elastic.co/cn/

ELK 软件栈介绍

  Elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。Logstash 负责数据的采集,处理(丰富数据,数据转换等),Kibana 负责数据展示,分析,管理,监督及应用。其中Elasticsearch 处于最核心的位置,负责存储、搜索、分析数据

正向索引和倒排索引的理解

倒排索引的概念是基于MySQL这样的正向索引而言的。

正向索引

以MySQL举例,例如有张商品表(tb_goods),有主键id,商品名称title,价格price三个字段。

  当我们需要搜索商品名称title中包含“手机”两个字的数据时,语句是

Select * from 商品表 where title like ‘%手机%’;因为用了like模糊搜索,且%在前面,这时是不走索引的,MySQL数据库只能逐条扫描,效率很低。

 

倒排索引

Elasticsearch中采用倒排索引:

我们先来理解两个es中的概念

(1)文档(document):是指用来搜索的数据,每条数据就是一个文档,类似于mysql数据库中的行。例如一个网页、一个商品信息。Elasticsearch是面向文档(Document)存储的。

(2)词条(term):对文档数据或用户搜索数据按照语义进行分词,得到的具备含义的词语就是词条。好比“华为手机”,可能分为“华为”和“手机”两个词条。

   ES保存文档时是会对文档中text字段进行分词,对词条创建索引。当用户搜索”华为手机“时,首先会通过分词器分成”华为“,”手机“两个词条,然后去词条列表中找到每个词条对应的文档id,好比通过手机的词条得到文档id为2和3,然后根据文档id查询到具体的文档,存入结果集中。

总结

什么是正向索引?

基于文档id创建索引。查询词条时必须先找到文档,而后判断是否包含词条

什么是倒排索引?

对文档内容分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条查询到文档id,而后获取到文档。

概念理解

文档

Elasticsearch是面向文档存储的,可以是数据库中的一条商品数据或者一个订单信息。

文档数据会被序列化为json格式后存储在elasticsearch中。

 索引(Index)映射(mapping)

索引(index):相同类型的文档的集合

映射(mapping):索引中文档的字段约束信息,类似表的结构约束。

和MySQL概念对比

Elasticsearch与数据库的关系:

Mysql:擅长事务类型操作,可以确保数据的安全和一致性。

Elasticsearch:擅长海量数据的搜索、分析、计算。 

posted @ 2022-07-22 17:12  JustJavaIt  阅读(53)  评论(0编辑  收藏  举报