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

Why elastic index storage size increase while updated index not insert?

我通过 logstash 从 oracle 写入索引。

输出为:

   elasticsearch {
                index => "****"
                document_type => "****"
                document_id => "%{my_computed_id}"
                hosts => "localhost:9200"
 }

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

我想更新我的文档,为什么要增加存储空间?

提前致谢

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

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

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

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

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

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

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

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