2014-07-10 35 views
0

我需要找到不同的域ID的使用elasticsearchElasticsearch獲得不同的行數

我的數據格式計數

{ 
      "_index": "outboxprov1", 
      "_type": "user", 
      "_id": "16bcd4dc080f4c789018dd97f76741ef", 
      "_score": 1, 
      "_source": { 
       "first_name": "jinu", 
       "team_id": "500" 
      } 
     }, 
     { 
      "_index": "outboxprov1", 
      "_type": "user", 
      "_id": "9ed8afe738aa63c28b66994cef1f83c6", 
      "_score": 1, 
      "_source": { 
       "first_name": "lal", 
       "team_id": "500" 
      } 
     }, 
     { 
      "_index": "outboxprov1", 
      "_type": "user", 
      "_id": "1d238cd2f8c06790fc20859a16e3183b", 
      "_score": 1, 
      "_source": { 
       "first_name": "author1", 
       "team_id": "500" 
      } 
     }, 
     { 
      "_index": "outboxprov1", 
      "_type": "user", 
      "_id": "616ee1c00a02564f71bb6c3067054d55", 
      "_score": 1, 
      "_source": { 
       "first_name": "kannan", 
       "team_id": "400" 
      } 
     }, 
     { 
      "_index": "outboxprov1", 
      "_type": "user", 
      "_id": "d48132bfaed792f3c32d12e310d41c87", 
      "_score": 1, 
      "_source": { 
       "first_name": "author3", 
       "team_id": "400" 
      } 
     }, 
     { 
      "_index": "outboxprov1", 
      "_type": "user", 
      "_id": "1a9d05586a8dc3f29b4c8147997391f9", 
      "_score": 1, 
      "_source": { 
       "first_name": "dibish", 
       "team_id": "100" 
      } 
     } 

     ] 
    } 

在這裏有三個不同的team_id S:500, 400, 100。在這種情況下,我想爲3。我已經試過基數聚集數:

{ 
    "size": 0, 
    "query" : { 
     "match_all" : { } 
    }, 
    "aggs" : { 
     "team_id_count" : { 
      "cardinality" : { 
       "field" : "team_id" 
      } 
     } 
    } 

} 

我在這裏得到正確的結果,但我可以看到,elasticsearch文檔指出基數是實驗性功能,它可能將來可能會發生變化。

有沒有什麼辦法可以在不使用基數聚合的情況下實現這一點?使用這個實驗性基數函數有什麼問題嗎?請指導我正確的方向。

回答

2

你可以使用terms aggregation

像這樣:

curl -XPOST http://localhost:9200/outboxprov1/user/_search -d ' 
{ 
    "size": 0, 
    "query" : { 
     "match_all" : { } 
    }, 
    "aggs" : { 
     "team_id_count" : { 
      "terms" : { 
       "field" : "team_id" 
      } 
     } 
    } 

}' 
+0

我已經試過方面聚集較早,但我不是在這裏得到準確的計數。響應類似下面的方式 「桶」:[ { 「鑰匙」: 「500」, 「doc_count」:3 }, { 「鍵」: 「400」, 「doc_count」:2 } ] – Dibish

+0

嗯。索引您的文檔後,我得到正確的結果。你的索引是否有映射?我的結果:{ 「team_id_count」:{ 「桶」:[ { 「鑰匙」: 「500」, 「doc_count」:3 }, { 「鍵」: 「400」, 「doc_count 「:2 },{ 「鍵」: 「100」, 「doc_count」:1 } ] } } – Mustafa

+0

感謝快速回復。我也得到了同樣的結果。但我需要得到3的計數,即3個不同的ID在那裏(500,400,100) – Dibish