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

标签 elasticsearch logstash logstash-configuration

我通过 logstash 从 oracle 写入索引。

输出是:

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

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

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

提前致谢

最佳答案

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

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

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

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

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

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

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

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

关于elasticsearch - 为什么弹性索引存储大小增加而更新的索引不插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59208823/

相关文章:

elasticsearch - 如何根据提交日期过滤logstash的输入数据?

elasticsearch - 无法使用logstash在elasticsearch上创建索引

elasticsearch - 使用Java代码在ElasticSearch中索引PDF文件

elasticsearch - 用于 Elasticsearch Multi-Tenancy SaaS 或单实例和代理的 Docker?

c# - NEST 5.5属性映射和自定义JsonConverter不起作用

elasticsearch - Elasticsearch 中多重索引的优势是什么?

ubuntu - 安装 logstash 后 CPU 使用率 100%

elasticsearch - 删除HTTP输入插件生成的标题字段

elasticsearch - 在ElasticSearch中按子频率过滤

elasticsearch - logstash文本文件输出配置