我索引这些:
POST nephi/boat/1
{
"plates": {
"id": 123,
"type": "brass"
},
"compass": {
"id": 123,
"name": "liahona"
}
}
POST nephi/boat/2
{
"plates": {
"id": 100,
"type": "brass"
},
"compass": {
"id": 234,
"name": "liahona"
}
}
我使用此搜索查询,因此我可以在plates.id
和compass.id
相等的情况下进行汇总:
POST nephi/boat/_search
{
"aggs": {
"terms_agg": {
"terms": {
"field": "plates.id"
},
"aggs": {
"filter_agg": {
"filter": {
"term": {
"compass.id": 123
}
}
}
}
}
},
"size": 0
}
我希望能够使用变量代替123,而不是"compass:id": 123
"compass:id": "__bucket_key"
,其中__bucket_key
将在上面的第一个文档中引用123,上面的第二个文档(plates.id
s)上有100个。
这样的事情可能吗?
答案 0 :(得分:0)
根据您的要求,您无需在plates.id
上进行汇总。尝试使用Script Query:
"filter": {
"script": {
"script": "doc['plates.id'].value == doc['compass.id'].value"
}
}
这将获取所有具有相同印版和罗盘ID的文件。
然后,您可以应用metric aggregation
左右。
确保启用脚本。