是否可以删除给定字段上的重复项?
例如以下查询:
{
"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不适用于聚合。 最佳答案
Field collapsing应该在这里有所帮助
{
"query": {
"term": {
"name_admin": {
"value": "nike"
}
}
},
"collapse" : {
"field" : "parent_sku",
"inner_hits": {
"name": "parent",
"size": 1
}
},
"_source": false,
"size": 2
}
上面的查询将返回一个文档文件
parent_sku
。关于elasticsearch - 跳过Elasticsearch搜索结果中的字段重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62152287/