【问题标题】:Why elastic index storage size increase while updated index not insert?为什么弹性索引存储大小增加而更新的索引不插入?
【发布时间】:2019-12-06 07:35:48
【问题描述】:

我通过 logstash 从 oracle 写入索引。

输出是:

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

但是当我检查索引管理时,Docs Count 是相同的,但存储大小会增加。

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

提前致谢

【问题讨论】:

  • 这个答案应该会有所帮助:stackoverflow.com/a/57883460/4604579
  • 我不明白答案,
  • 如果文档数量没有增加,但存储空间增加了,这意味着您一遍又一遍地发送具有相同 ID 的相同文档。较旧的版本会被较新的版本覆盖,并且已删除文档的数量也会增加,从而增加了数量。还要检查已删除文档的数量,您应该会看到它也在增加

标签: elasticsearch logstash logstash-configuration


【解决方案1】:

这是因为 elasticsearch 更新文档的方式。

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多