【问题标题】:Eliminate duplicates in elasticsearch query消除弹性搜索查询中的重复项
【发布时间】:2017-07-07 14:48:44
【问题描述】:

我有一些文档被索引两次或更多的问题,所以我想在搜索时过滤掉这些重复项。我关注了其他一些线程并构建了这个查询:

{
  "query" : { ... },
  "size" : 10,
  "from" : 0,
  "sort" : { ... },
  "aggs" : {
    "dedup" : {
      "terms" : {
        "field" : "content.keyword"
      },
      "aggs" : {
        "dedup_docs" : {
          "top_hits" : {
            "size" : 1
          }
        }
      }
    }
  }
}

但是这个聚合好像没有效果。我仍然得到重复的结果(内容字段中具有相同文本的文档)。

请求已更改:

{
  "query" : { ... },
  "size" : 10,
  "from" : 0,
  "sort" : { ... },
  "collapse" : {
    "field" : "content.keyword"
  }
}

【问题讨论】:

  • 您是要过滤掉重复的聚合还是重复的文档结果?
  • 我想过滤掉重复的文档结果,比如说标题相同或文本内容相同的文档。
  • 你在使用stackoverflow.com/questions/25448186/…这里的答案吗?您是否在正确的端点上运行? /_search?search_type=count 您是否在聚合中查找结果而不是在 hits 数组中而不是

标签: elasticsearch


【解决方案1】:

你也可以看看最近添加的field collapsing feature

【讨论】:

  • 折叠字段似乎是个好主意,我更改了查询(请查看我的帖子)。但是如果我执行它,我会得到错误:“[collapse] 中 START_OBJECT 的未知键。”
  • 字段折叠仅在 ES 5.4 及更高版本中受支持...您可能需要升级
  • 我更新了我的弹性实例,它运行良好。非常感谢!
  • 字段折叠效果很好,但是否可以获得总点击数(不重复计数)?
  • 否,如文档页面所述:响应中的总命中数表示匹配文档的数量而不折叠。不同组的总数未知。
猜你喜欢
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 2014-06-22
  • 2017-02-24
  • 2020-09-12
  • 1970-01-01
相关资源
最近更新 更多