比方說,你在創建索引的用戶對象是這樣的:
POST users/user
{
"login":"user1",
"organization":"fb"
}
您試圖通過他們的organization
價值收集您用戶。爲此,您必須使用terms
彙總。
您的查詢將是這樣的:
POST users/_search?search_type=count
{
"aggs": {
"by_organization": {
"terms": {
"field": "organization"
}
}
}
}
注:SEARCH_TYPE =計數這裏只具有較短的響應,結果命中將不予退還(見here)。
你的搜索響應將是這樣的:
{
(...)
"aggregations": {
"by_organization": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "app",
"doc_count": 4
},
{
"key": "fb",
"doc_count": 3
},
{
"key": "gmail",
"doc_count": 2
}
]
}
}
}
你可以看到對應每個組織價值桶。
注意:
- 只有頂端10桶默認情況下將返回(見
terms
聚集size
參數)
- 這個簡單的例子可以作爲組織價值觀很簡單,但在實際生活中,您必須將您的組織字段設置爲
not_analyzed
以便彙總原始值(而不是通過分析獲得的條款)
我強烈邀請你可以閱讀更多關於分析和terms
聚合documentation。
實際上我們得到的值是像(app-51,fb-100,gmail-30,other-15)這樣的聚合值。現在我們需要將值分成0到50個用戶(gmail和其他) .51到100個用戶(app和fb)。我們需要挖掘這些值。是否有可能? – Vijay 2015-03-13 13:15:43
現在,我認爲這是不可能的:你將不得不在應用程序端做到這一點。但是,它計劃成爲v2的一部分。0(參見[相關問題](https://github.com/elastic/elasticsearch/issues/9876))。 – ThomasC 2015-03-13 13:35:01
感謝您的信息Thomas Cucchietti。 – Vijay 2015-03-16 05:05:21