2016-04-20 44 views
0

我有許多文檔,其中有各種ProcessName。 每個都有一些狀態碼Codeelasticsearch中兩個或更多字段的聚合

我需要通過這兩個字段來彙總文檔。

例如:

ProcessA 
code: 1 
count: 220 

ProcessA 
code: 2 
count: 335 

ProcessB 
code: 2 
count: 520 

ProcessC 
code: 3 
count: 520 

我已經成功只有一個字段(ProcessName)彙總:

POST /_search 
{ 
    "query": { 
     "bool": { 
      "must": [ 
      { 
       "term": { 
       "_type": "monitor" 
       } 
      } 
      ] 
     } 
    }, 
    "aggs" : { 
     "ProcessNameAgg" : { 
      "terms" : { "field" : "ProcessName", 
         "size" : 5, 
         "order" : { "_count" : "desc" } 
      } 
     } 
    } 
} 

我試圖讓terms陣列有兩個領域,但遺憾的是我正在解析異常(術語應該只有一個字段)。

回答

1

試試這個:

POST /_search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "term": { 
      "_type": "monitor" 
      } 
     } 
     ] 
    } 
    }, 
    "aggs": { 
    "ProcessNameAgg": { 
     "terms": { 
     "field": "ProcessName", 
     "size": 5, 
     "order": { 
      "_count": "desc" 
     } 
     }, 
     "aggs": { 
     "codes": { 
      "terms": { 
      "field": "code", 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
}