跳过Elasticsearch搜索结果中的字段重复

问题描述 投票:0回答:1

是否可以删除给定字段上的重复项?

例如,以下查询:

{
  "query": {
    "term": {
      "name_admin": {
        "value": "nike"
      }
    }
  },
  "_source": [
    "name_admin",
    "parent_sku",
    "sku"
  ],
  "size": 2
}

正在检索

"hits" : [
      {
        "_index" : "product",
        "_type" : "_doc",
        "_id" : "central30603",
        "_score" : 4.596813,
        "_source" : {
          "parent_sku" : "SSP57",
          "sku" : "SSP57816401",
          "name_admin" : "NIKE U NSW PRO CAP NIKE AIR"
        }
      },
      {
        "_index" : "product",
        "_type" : "_doc",
        "_id" : "central156578",
        "_score" : 4.596813,
        "_source" : {
          "parent_sku" : "SSP57",
          "sku" : "SSP57816395",
          "name_admin" : "NIKE U NSW PRO CAP NIKE AIR"
        }
      }
    ]

我想跳过parent_sku上的重复项,因此每个parent_sku仅得到一个结果,就像suggestion可以通过执行类似"skip_duplicates": true的操作一样。

[我知道我使用aggregation即可实现此目标,但我想坚持搜索,因为我的查询有点复杂,而且我正在使用scroll API,该API无法用于聚合。

elasticsearch search duplicates nosql
1个回答
1
投票
Field collapsing应该在这里有所帮助

{ "query": { "term": { "name_admin": { "value": "nike" } } }, "collapse" : { "field" : "parent_sku", "inner_hits": { "name": "parent", "size": 1 } }, "_source": false, "size": 2 }

上面的查询将返回一个文档parent_sku
© www.soinside.com 2019 - 2024. All rights reserved.