Return Elasticsearch 中的不同值
Return distinct values in Elasticsearch
我正在尝试解决我必须在搜索中获得不同结果的问题。
{
"name" : "ABC",
"favorite_cars" : [ "ferrari","toyota" ]
}, {
"name" : "ABC",
"favorite_cars" : [ "ferrari","toyota" ]
}, {
"name" : "GEORGE",
"favorite_cars" : [ "honda","Hyundae" ]
}
当我对最喜欢的汽车“法拉利”执行术语查询时。我得到两个名称为 ABC 的结果。在这种情况下,我只是希望返回的结果应该是一个。所以我的要求是,如果我可以在名称字段上应用一个不同的字段来接收一个 1 结果。
谢谢
实现您想要的效果的一种方法是在 name
字段上使用 terms
聚合,然后使用大小为 1 的 top_hits
sub-aggregation,如下所示:
{
"size": 0,
"query": {
"term": {
"favorite_cars": "ferrari"
}
},
"aggs": {
"names": {
"terms": {
"field": "name"
},
"aggs": {
"single_result": {
"top_hits": {
"size": 1
}
}
}
}
}
}
这样,您将获得一个术语 ABC
,然后将一个匹配的文档嵌套到其中
我正在尝试解决我必须在搜索中获得不同结果的问题。
{
"name" : "ABC",
"favorite_cars" : [ "ferrari","toyota" ]
}, {
"name" : "ABC",
"favorite_cars" : [ "ferrari","toyota" ]
}, {
"name" : "GEORGE",
"favorite_cars" : [ "honda","Hyundae" ]
}
当我对最喜欢的汽车“法拉利”执行术语查询时。我得到两个名称为 ABC 的结果。在这种情况下,我只是希望返回的结果应该是一个。所以我的要求是,如果我可以在名称字段上应用一个不同的字段来接收一个 1 结果。
谢谢
实现您想要的效果的一种方法是在 name
字段上使用 terms
聚合,然后使用大小为 1 的 top_hits
sub-aggregation,如下所示:
{
"size": 0,
"query": {
"term": {
"favorite_cars": "ferrari"
}
},
"aggs": {
"names": {
"terms": {
"field": "name"
},
"aggs": {
"single_result": {
"top_hits": {
"size": 1
}
}
}
}
}
}
这样,您将获得一个术语 ABC
,然后将一个匹配的文档嵌套到其中