2015-11-24 106 views
0

我有一個彈性的指標,其中每個文件包含以下內容:聚集的類別,按類別順序排序

category { 
"id": 4, 
"name": "Green", 
"seq": 2 
} 

我可以使用聚合得到我的文檔數量爲每個類別:

{ 
"size": 0, 
"aggs": { 
    "category": { 
    "terms": { 
    "field": "category.name" 
    } 
    } 
} 
} 

這很好,但aggs按doc數排序。我想要的是按seq值排序的桶,這在SQL中很容易。

有什麼建議嗎?

謝謝!

回答

1

看一看ordering terms aggregations

像這樣的事情可以工作,但前提是"name""sequence"有正確的關係(一個對一個,或它的作品了一些其他方式):

POST /test_index/_search 
{ 
    "size": 0, 
    "aggs": { 
     "category": { 
     "terms": { 
      "field": "category.name", 
      "order" : { "seq_num" : "asc" } 
     }, 
     "aggs": { 
      "seq_num": { 
       "max": { 
        "field": "category.seq" 
       } 
      } 
     } 
     } 
    } 
} 

下面是一些代碼,我用用於測試:

http://sense.qbox.io/gist/4e551b2faec81eb0343e0e6d0cc9b10f20d7d4c1

+0

謝謝!我也發現了一些有用的東西:如果category.seq字段被分析(未標記爲not_analyze),那麼它不起作用。 –