2015-05-19 83 views
0

我需要對ElasticSearch術語聚合結果中的桶進行排序。 下面是索引記錄ElasticSearch是否可以使用術語聚合響應在非術語字段中對桶進行排序?

{"personId":"10","Salary":10000, "Age":20, "personName":"xyz"} 

我使用條款聚集在現場的俸祿之一。以下是術語聚合ElasticSearch查詢:

{ 
    "aggs" : { 
     "genders" : { 
      "terms" : { 
       "field" : "Salary" 
      } 
     } 
    } 
} 

此查詢返回基於Salary值的存儲桶。這些桶可以排序在使用下面的查詢命令的薪水值:

{ 
    "aggs" : { 
     "genders" : { 
      "terms" : { 
       "field" : "gender", 
       "order" : { "_term" : "asc" } 
      } 
     } 
    } 
} 

但我需要在任何領域Age(非條款場)桶排序,有沒有辦法做到這一點?

+0

你能告訴我們你正在使用的映射嗎? – Val

+0

請添加預期結果的具體示例,以清晰地表達您的問題。 – bittusarkar

回答

1

整合的要點是將文檔「分派」到桶中,每個桶都由terms聚合的聲明字段定義,在您的案例Salary中。

您在響應中獲取的存儲桶不再是文檔。例如,在10000桶中,您將獲得具有Salary: 10000的文檔數,並且您將擁有儘可能多的存儲桶,即所有文檔中存在的不同Salary值(默認情況下只有10個存儲桶)。

所以,因爲水桶都沒有文檔,因爲一隻水桶能聚集不同Age值的文檔,它並不清楚你希望如何Salary桶被Age進行排序。

也許,一個出路,這可能是對Age字段中添加terms子的聚集,讓您得到最高Salary桶以下,你得到Age桶。然後,您可以以任何您想要的方式將您的012對配對排序

相關問題