Elasticsearch 每日滚动索引包含重复的 _id
Elasticsearch daily rolling index contains duplicate _id
这可能是个愚蠢的问题,但我使用每日滚动索引通过 logstash 保存我的事件,配置很简单:
input: {..source..}
filter: {..filter..}
output: {
elasticsearch: {
document_id: %{my_own_guarantee_unique_id}
index: myindex-%{+YYYY.MM.DD}
}
}
我发现如果有相同 my_own_guarantee_unique_id
的事件出现在不同的日期,它将在这些每日滚动索引中创建多次,即。您可以在 myindex-2015.06.21 和 myindex-2015.06.22
中找到 _id = 123 的事件
这种重复的开箱即用吗?我应该怎么做才能避免它?任何建议或阅读将不胜感激,谢谢!
由于你使用了多个索引,每天一个,你可以得到相同的_id。使文档独一无二的是 uid,它是索引、类型和 ID 的组合。据我所知,elastic 中没有办法改变这个。
我遇到了完全相同的问题:多个具有相同 ID 但在不同索引中的重复文档(我有 1 个索引/日期)。
对我有用的是生成一个带有索引名称的字段,并在 logstash 配置的输出部分重用它。
index => "%{index_name}"
document_id => "%{clickID}"
这可能是个愚蠢的问题,但我使用每日滚动索引通过 logstash 保存我的事件,配置很简单:
input: {..source..}
filter: {..filter..}
output: {
elasticsearch: {
document_id: %{my_own_guarantee_unique_id}
index: myindex-%{+YYYY.MM.DD}
}
}
我发现如果有相同 my_own_guarantee_unique_id
的事件出现在不同的日期,它将在这些每日滚动索引中创建多次,即。您可以在 myindex-2015.06.21 和 myindex-2015.06.22
这种重复的开箱即用吗?我应该怎么做才能避免它?任何建议或阅读将不胜感激,谢谢!
由于你使用了多个索引,每天一个,你可以得到相同的_id。使文档独一无二的是 uid,它是索引、类型和 ID 的组合。据我所知,elastic 中没有办法改变这个。
我遇到了完全相同的问题:多个具有相同 ID 但在不同索引中的重复文档(我有 1 个索引/日期)。
对我有用的是生成一个带有索引名称的字段,并在 logstash 配置的输出部分重用它。
index => "%{index_name}"
document_id => "%{clickID}"