我有一些对象按“masterID”分组。我需要一个聚合/查询来向我显示按“masterID”每个对象组具有最高“相关性”的对象。
通过聚合术语“masterID”,我可以获得每个“masterID”的存储桶。但是,如何在每个存储桶中获得最高的“相关性”对象?
到目前为止的查询是:
curl -XGET 'http://localhost:9200/pwo/_search?search_type=count&size=0&pretty=true' -d '{
"aggregations": {
"masterIDs": {
"terms": {
"field": "masterID",
"size": 0
}
}
}
}
'
和
curl -XGET 'http://localhost:9200/pwo/_search?size=0&pretty=true' -d '{
"aggregations": {
"relevance": {
"max": {
"field": "relevance"
}
}
}
}
'
有没有办法通过单个查询解决此问题?
最佳答案
您可以在masterIDs块中添加相关性聚合块,如下所示:
curl -XGET 'http://localhost:9200/pwo/_search?size=0&pretty=true' -d '{
"aggregations": {
"masterIDs": {
"terms": {
"field": "masterID",
"size": 0
},
"aggregations": {
"relevance": {
"max": { "field" : "relevance" }
},
"aggregations": {
"top_hits": {
"size": 1
}
}
}
}
}
}
'