问题¶
- 1.luncene如何实现准实时索引?
- 2.写入的数据是如何变成ES中可以被检索和聚合的索引内容?
- 3.什么是segment?
- 4.什么是commit?
基础概念¶
Shard(分片)¶
- 1.一个Shard就是一个Lucene实例,即一个完整的搜索引擎,会消耗一定文件句柄、内存、以及 CPU 运转
- 2.一个索引可以只包含一个Shard,只是一般情况下会用多个分片,可以拆分索引到不同的节点上,分担索引压力
- 3.用于计算相关度的词项统计信息是基于分片的。如果有许多分片,每一个都只有很少的数据会导致很低的相关度。
segment(段)¶
elasticsearch中的每个分片包含多个segment,每一个segment都是一个倒排索引;在查询的时,会把所有的segment查询结果汇总归并后最为最终的分片查询结果返回;在创建索引的时候,elasticsearch会把文档信息写到内存bugffer中(为了安全,也一起写到translog),定时(可配置)把数据写到segment缓存小文件中,然后刷新查询,使刚写入的segment可查。
- 1.segment是不可变的,物理上你并不能从中删除信息,所以在删除文档的时候,是在文档上面打上一个删除的标记,然后在执行段合并的时候,进行删除
- 2.索引segment段的个数越多,搜索性能越低且消耗内存更多
document(文档)¶
索引和搜索的主要数据载体,对应写入到ES中的一个doc。ES中的最小的、整体的数据单位,比如一条用户订单信息是一个Doc。一个index中存放了很多Doc
field¶
document中的各个字段
term¶
词项,搜索时的一个单位,代表文本中的某个词
token¶
词条,词项(term)在字段(field)中的一次出现,包括词项的文本、开始和结束的位移、类型等信息
index(索引)¶
在ES中类似数据库中db,有1个或多个type,由若干shard分片组成
Lucene Index¶
注意和Es Index区别。Lucene Index是由若干段和提交点文件组成。

参考¶
文件下载-ES实战手册-阿里 Elasticsearch:Node roles 介绍 - 7.9 之后版本_Elastic 中国社区官方博客的博客-CSDN博客_elasticsearch node.role