我有一个包含多个对象的嵌套字段的索引,如:
{
"_id": "record1",
"testing_nes":[
{
"test_id": 123,
"test_status": "done"
},
{
"test_id": 981,
"test_status": "new"
},
{
"test_id": 234,
"test_status": "new"
},
{
"test_id": 987,
"test_status": "done"
}
]
},
{
"_id": "record2",
"testing_nes":[
{
"test_id": 123,
"test_status": "new"
},
{
"test_id": 981,
"test_status": "new"
},
{
"test_id": 234,
"test_status": "new"
},
{
"test_id": 987,
"test_status": "new"
}
]
}
我希望通过test_status聚合和计算对象,但只能使用test_id = 987进行聚合和计数。此查询:
{
"query": {
"bool": {
"must": [
{
"match": {
"testing_nes.test_id": "987"
}
}
]
}
},
"aggs": {
"statuses": {
"terms": {
"field": "testing_nes.test_status",
"size": 10
}
}
}
}
计算所有嵌套对象,但我只想用test_id = 987
计算这些对象答案 0 :(得分:0)
试试这个
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "testing_nes",
"filter": {
"term": {
"testing_nes.id": 987
}
}
}
}
]
}
},
"size": 0,
"aggs": {
"count": {
"nested": {
"path": "testing_nes"
},
"aggs": {
"testing_nes_status_new": {
"terms": {
"field": "testing_nes.test_status"
},
"aggs": {
"top_reverse_nested": {
"reverse_nested": {}
}
}
}
}
}
}
}
doc_dount将位于top_reverse_nested
。