2015-01-26 75 views
4

當我提出一個要求這樣Elasticsearch基數排序錯誤

curl -XGET "http://localhost:9200/log/travels/_search?pretty" -d '                 
{ 
    "aggs":{ 
     "travelers":{ 
      "terms":{ 
       "field":"traveler", 
       "shard_size":0, 
       "size":5, 
       "order":{ 
        "cities":"desc" 
       } 
      }, 
      "aggs":{ 
       "cities":{ 
        "nested":{ 
         "path":"cities" 
        }, 
        "aggs":{ 
         "city_count":{ 
          "cardinality":{ 
           "field":"cities.name" 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
}' 

我得到多數民衆贊成下令錯誤的響應,這樣

"aggregations" : { 
    "travelers" : { 
     "doc_count_error_upper_bound" : 0, 
     "sum_other_doc_count" : 410, 
     "buckets" : [ { 
     "key" : "patrick", 
     "doc_count" : 9, 
     "cities" : { 
      "doc_count" : 10, 
      "city_count" : { 
      "value" : 3 
      } 
     } 
     }, { 
     "key" : "jonathan", 
     "doc_count" : 8, 
     "cities" : { 
      "doc_count" : 10, 
      "city_count" : { 
      "value" : 4 
      } 
     } 
     }, { 
     "key" : "yosef", 
     "doc_count" : 8, 
     "cities" : { 
      "doc_count" : 10, 
      "city_count" : { 
      "value" : 4 
      } 
     } 
     }, { 
     "key" : "mark", 
     "doc_count" : 8, 
     "cities" : { 
      "doc_count" : 9, 
      "city_count" : { 
      "value" : 2 
      } 
     } 
     }, { 
     "key" : "mike", 
     "doc_count" : 7, 
     "cities" : { 
      "doc_count" : 9, 
      "city_count" : { 
      "value" : 5 
      } 
     } 
     } ] 
    } 
    } 

我想它下令城市數量前往。如果我將基數更改爲value_count,則它會正確排序,但我無法這樣做,因爲它計數重複項。

如果有更多的細節幫助你,請隨時索要。

回答

6

如果您嘗試按2級深度子聚合進行排序,則order語法根據the documentation(請查看段落末尾)略有不同。

ElasticSearch權威指南的this part中也對此有更詳細的說明。

在你的情況,這樣的事情應該做的伎倆:

"order":{ "cities>city_count.value":"desc" } 

希望這有助於!

+0

它有幫助。非常感謝你。 – 2015-01-27 17:02:40

+0

我希望我能多次投票,爲我節省了很多頭痛,謝謝! – 2016-05-06 21:45:46