Elasticsearch 实时获取与段合并优化
1. 近实时 GET 操作
事务日志为我们免费提供了实时 GET 操作这一特性,该操作使我们能够返回文档的先前版本,包括未提交的版本。实时 GET 操作从索引中获取数据,但首先会检查事务日志中是否有该文档的更新版本。如果没有已刷新的文档,索引中的数据将被忽略,而返回事务日志中的更新版本。
要查看其工作原理,可以将示例中的搜索操作替换为以下命令:
curl -XGET localhost:9200/test/test/1?prettyElasticsearch 应返回类似于以下的结果:
{ "_index": "test", "_type": "test", "_id": "1", "_version": 2, "exists": true, "_source": { "title": "test2" } }从结果可以看出,无需使用刷新技巧即可获得文档的最新版本,结果符合预期。
2. 段合并控制
每个 Elasticsearch 索引由一个或多个分片组成,并且可以有零个或多个副本。每个分片和副本实际上都是 Apache Lucene 索引,由多个段(至少一个段)构成。段是一次写入、多次读取的,除了存储在某个文件中的已删除文档信息外,数据结构可以更改。当满足某些条件时,一些段的内容可以复制到一个更大的段中,原始段将被丢弃并从磁盘中删