gpt4 book ai didi

elasticsearch - 处理Elasticsearch中的重复记录

转载 作者:行者123 更新时间:2023-12-03 00:42:30 25 4
gpt4 key购买 nike

我正在使用Hadoop + ELK堆栈来构建分析堆栈。我试图每天刷新索引。

我正在使用来自CSV格式的第三方的数据。我无法控制输入数据,即我不能要求更改CSV文件的架构。

问题是CSV记录中没有唯一的ID,或者甚至合并列以创建唯一的ID也将不起作用。因此,在刷新Elasticsearch时,会将重复数据添加到索引中。

所以,如果第一天的数据像

Product1,Language1,Date1,$1
Product2,Language2,Date1,$12

第2天的数据变为
Product1,Language1,Date1,$1
Product2,Language2,Date1,$12
Product1,Language1,Date1,$1
Product2,Language2,Date1,$12
Product3,Language1,Date2,$5(new record added on day2)

有什么好方法可以在ELK中处理此问题。我正在使用Logstash来使用csv文件。

最佳答案

我认为这全都与文档“_id”有关。

如果每个文档都有唯一的“_id”,那么就不会有问题,因为您只需将文档“更新”为相同的值即可。如果需要,您甚至可以将映射设置为不允许更新。

您的问题是您没有将文档的“_id”链接到文档的内容(在某些情况下还可以)。

我猜一个简单的解决方案是创建自己的“my_id”字段并将“_id”的路径设置为它,例如here

然后,问题就变成了如何创建“my_id”字段。我会在文档上使用哈希。

一个示例python片段将是(我确定您可以找到合适的ruby插件):

import hashlib
hash_object = hashlib.sha1(b"Product2,Language2,Date1,$12")
hex_dig = hash_object.hexdigest()
print(hex_dig)

关于elasticsearch - 处理Elasticsearch中的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31430255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com