[英]In Elasticsearch, how do I perform a nested sum query with a filter?
我創建了一個映射如下:
PUT cars
{
"mappings":{
"_doc":{
"properties":{
"metadata":{
"type":"nested"
}
}
}
}
}
然后我插入一個文件:
PUT /cars/_doc/1
{
"metadata":[
{
"key":"price",
"value":20000
},
{
"key":"miles",
"value":1000
}
]
}
現在我希望檢索所有價格的總和(這里只有一個文件,但我仍然認為這足以說明這一點)。
我試過了:
GET cars/_doc/_search
{
"aggs": {
"metadata": {
"nested": {
"path": "metadata"
},
"aggs": {
"prices": {
"sum": {
"field": "metadata.value"
}
}
}
}
}
}
但這將包括我不想要的miles
。
如何添加過濾器以便只在我的查詢中包含price
,即如何讓查詢返回20,000而不是21,000?
由於您只想考慮價格,所以您需要做的就是過濾key
price
的嵌套文檔。 為此,您需要添加過濾器聚合 ,如下所示:
{
"aggs": {
"metadata": {
"nested": {
"path": "metadata"
},
"aggs": {
"price": {
"filter": {
"term": {
"metadata.key": "price"
}
},
"aggs": {
"prices": {
"sum": {
"field": "metadata.value"
}
}
}
}
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.