Elasticsearch核心概念和原理

2021-05-25  本文已影响0人  GALAace

搜索功能

使用传统关系型数据库做搜索存在:性能差(模糊查询可能会索引失效)、不可靠、结果不准确(相关度低)等问题,为解决这类问题,可以使用ES来处理搜索请求。ES的核心是倒排索引

倒排索引 数据结构

  1. 包含这个关键词的document list
  2. 关键词在每个doc中出现的次数(词频) TF(term frequency)
  3. 关键词在整个索引中出现的次数 IDF (inverse doc frequency)
  4. 关键词在当前doc中出现的次数
  5. 每个doc的长度,越长相关度越低
  6. 包含这个关键词的所有doc的平均长度

Lucene

Lucene是一个jar包,帮我们创建倒排索引,提供复杂的API。Lucene是单点的,扩展相对复杂。

Elasticsearch

ES核心概念

  1. Cluster(集群):每个集群至少包含两个节点
  2. Node(节点):集群中的每个节点,一个节点不代表一台服务器
  3. Field(字段): 一个数据字段,与index和type一起,可以定位一个doc
  4. Document (文档):ES最小的数据单元 是json格式
  5. Type:逻辑上的数据分类,es 7.x中删除了type的概念
  6. Index:一类相同或者类似的doc,比如一个员工索引,商品索引

Shard分片:

  1. 一个index包含多个Shard,默认5个Primay,默认每个Primay分配一个Replica,Primay的数量在创建索引的时候设置,如果想修改,需要重建索引。
  2. 每个Shard都是一个Lucene实例,有完整的创建索引的处理请求能力。
  3. ES会自动在nodes上为我们做shard 均衡。
  4. 一个doc是不可能同时存在于多个PShard中的,但是可以存在于多个RShard中。
  5. Primay和对应的Replica不能同时存在于同一个节点,所以最低的可用配置是两个节点,互为主备。
上一篇下一篇

猜你喜欢

热点阅读