es的近实时搜索

  • Post author:
  • Post category:其他


es的近实时搜索其实底层是通过lucene的近实时搜索实现的,

1.对于lucene来说,有两个主要的类: IndexWriter类和IndexReader类,正常情况下,IndexReader只能读取到创建时刻的索引的快照数据,当通过IndexWriter写入文档并进行commmit操作后,为了能看到这些新加入的文档,需要重新打开一个新的IndexReader才可以。

2.es的刷新操作其实对应的是创建新的IndexReader的频率,这样新打开的IndexReader就能看到最新的提交的索引数据。

3.es的flush的周期操作对应着lucene定时flush数据的周期,也就是数据多久从操作系统缓存冲刷到磁盘中,注意即使数据冲刷到了磁盘中,新打开的IndexReader也不可见到这些数据,需要IndexWriter进行commit之后,新打开的IndexReader才能看到数据.

4.lucene的索引目录文件中包括多个分段,每个分段是一个完整在子索引的集合,目录中会包含一个segment_N的文件包含当前索引中的所有段的后缀,lucene会周期性的进行段合并,以提高搜索性能



版权声明:本文为lixia0417mul2原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。