【问题标题】:Remove duplicate records in document (Elasticsearch)删除文档中的重复记录 (Elasticsearch)
【发布时间】:2019-03-14 18:06:58
【问题描述】:

我正在编写自己的应用程序以在 Elasticsearch 和 SQL Server 之间进行集成,并且我正在将 SQL Server 中选定表中的所有数据发送到 Elasticsearch,但我遇到了一个问题。

如果我在我的应用程序中设置每分钟都与该表挂钩,它会每分钟将这些记录再次存储在 Elasticsearch 中。这会在 Elasticsearch 文档中产生大量重复记录。

Elasticsearch 中是否有一个查询可以检查是否有任何重复记录(在每个属性中重复)并删除该重复记录?

【问题讨论】:

    标签: sql-server elasticsearch


    【解决方案1】:

    这可以做到,但不是通过特殊查询,而是通过更改索引文档的方式。

    如何确保文件的唯一性?

    这个问题可能here已经回答过了,重点是明确定义插入文档的_id

    为了达到您想要的效果,您可以尝试计算整个 json 的哈希值,然后再将其发送到 Elasticsearch 并将其用作 _id。 (确保 json 以稳定的方式序列化为字符串,就像 sort_keys 在 python 中所做的那样。)

    如果您有其他唯一标识符,最好使用它而不是数据哈希。

    不幸的是,应该重新索引现有索引(_ids 以新方式计算)。

    希望有帮助!

    【讨论】:

    • 我用过这个原理。我正在计算基于整个行记录的合并字符串的哈希,这会产生唯一的哈希。如果该散列存在于文档记录中,则在文档中插入值将被忽略。这是一个很好的方法,因为我不知道表本身是否会有唯一值,比如 ID 或其他东西。我希望 Elasticsearch 能够集成一些东西,但这也很有效。感谢您的建议。
    猜你喜欢
    • 2014-10-16
    • 2012-01-06
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 2020-07-16
    相关资源
    最近更新 更多