2016-09-15 6 views
0

ich einen Index haben, der mit mehreren Objekten verschachtelten Feld enthält wie:Verschachtelte Aggregationen aggregieren alle Vorkommen

{  
    "_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"  
     }  
    ]  
} 

ich aggregieren wollen und Objekte von test_status zu zählen, sondern nur diese mit test_id = 987. Diese Abfrage:

{ 
"query": { 
    "bool": { 
     "must": [ 
     { 
      "match": { 
      "testing_nes.test_id": "987" 
      } 
     } 
     ] 
    } 
}, 
"aggs": { 
    "statuses": { 
     "terms": { 
     "field": "testing_nes.test_status", 
     "size": 10 
     } 
    } 
} 
} 

zählt alle verschachtelten Objekten, aber ich will nur diese mit test_id = 987 dieses

Antwort

0

Versuchen

zählen
{ 
    "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 wird in top_reverse_nested sein.

Verwandte Themen