【问题标题】:Removing duplicates in Elasticsearch cross cluster search在 Elasticsearch 跨集群搜索中删除重复项
【发布时间】:2020-03-25 12:50:42
【问题描述】:

我正在使用跨集群搜索并通过 _id 搜索两个集群中都存在的文档。 ES 返回 2 个命中(1 个在本地索引中,1 个在远程索引中)。我只想要本地索引中的那个。如何从远程集群中删除重复项?

查询:

{
"query": {
"terms": {
"_id": [ "123"]
}
}
}```

【问题讨论】:

    标签: elasticsearch elastic-stack elasticsearch-plugin


    【解决方案1】:

    您应该能够通过在 _id 字段上使用 Field Collapsing 来实现这一点,并定义一个排序条件,在该条件下本地集群中的文档排名更高(例如集群 ID 或时间戳等)

    (见Elasticsearch Reference: Field Collapsing

    【讨论】:

    • 谢谢@Daniel。不幸的是,_id 字段未定义为关键字/数字,因此折叠错误 - 折叠字段 _id 的未知类型,只接受关键字和数字 任何解决方法?查询 - { "query": { "terms": { "_id": [ "123"] } }, "collapse" : { "field" : "_id" }, "sort": ["date"], "from": 10 }
    • 只需更改您的映射以将 id 复制到带有 copy_to 映射参数的关键字类型字段中。更改映射后,在索引上执行 update_by_query 以确保填充新字段。
    • 抱歉耽搁了,今天能够验证这一点。将其设为关键字后按预期工作。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    相关资源
    最近更新 更多