ElasticSearch 动态更新索引

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch 动态更新索引相关的知识,希望对你有一定的参考价值。

Elasticsearch版本:2.x

1. 不变性

倒排索引被写入磁盘后是 不可改变(immutable):永远不会被修改。不变性有如下几个重要的优势:

  • 不需要锁。如果你没有必要更新索引,你就没有必要担心多进程会同时修改数据。
  • 一旦索引被读入内核的文件系统缓存中,由于其不会改变,便会留在那里。只要文件系统缓存中还有足够的空间,那么大部分读请求会直接请求内存,而不会命中磁盘。这提供了很大的性能提升。
  • 其它缓存(例如filter缓存),在索引的生命周期内始终保持有效。因为数据不会改变,不需要在每次数据改变时被重建。
  • 写入一个大的倒排索引中允许数据被压缩,减少磁盘 I/O 和 缓存索引所需的RAM量。

当然,一个不变的索引也有缺点。主要是它是不可变的! 你不能修改它。如果你需要让一个新的文档可被搜索,你需要重建整个索引。这对索引可以包含的数据量或可以更新索引的频率造成很大的限制。

2. 动态更新索引

下一个需要解决的问题是如何更新倒排索引,而不会失去其不变性的好处? 答案是:使用多个索引。通过增加一个新的补充索引来反映最近的修改,而不是直接重写整个倒排索引。每一个倒排索引都会被轮流查询–从最旧的开始–再对各个索引的查询结果

以上是关于ElasticSearch 动态更新索引的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch探索之路集群与分片:选举动态更新近实时搜索事务日志段合并

ElasticSearch探索之路集群与分片:选举动态更新近实时搜索事务日志段合并

ElasticSearch探索之路集群与分片:选举动态更新近实时搜索事务日志段合并

elasticsearch 运行原理

Elasticsearch-尚硅谷(7. 进阶-下)学习笔记

ElasticSearch实战(十九)-索引字段动态映射灵活扩展