为什么弹性索引存储大小增加而更新索引不插入?

Ers*_*har 3 elasticsearch logstash logstash-configuration

我通过 Logstash 从 Oracle 写入索引。

输出是:

   elasticsearch {
                index => "****"
                document_type => "****"
                document_id => "%{my_computed_id}"
                hosts => "localhost:9200"
 }
Run Code Online (Sandbox Code Playgroud)

但是当我检查索引管理时,文档计数相同,但存储大小增加。

我想更新我的文档,为什么存储大小会增加?

提前致谢

gau*_*620 7

发生这种情况是因为 elasticsearch 更新文档的方式。

当您更新文档时,elasticsearch 不会简单地覆盖该文档。 它将旧文档标记为已删除,并使用当前文档中存在的字段创建一个新文档。

搜索时,标记为已删除的文档不会包含在搜索中。

你还需要了解数据在lucene后端是如何存储的。在后端elasticsearch的一个分片是lucene的一个索引。 每个 lucene 索引都有多个段。

当段大小变大时,多个段合并形成一个新的大段。

当段合并形成新段时,标记为已删除的文档不会包含在新段中。

所以你的数据大小会暂时增加,但最终会下降。

这是一个链接:https://www.elastic.co/blog/lucenes-handling-of-deleted-documents