2015-06-13 94 views

回答

2

您可以通過sorting在預定義字段_type上實現此目的。下面的查詢按文檔類型的升序對結果進行排序。

POST <indexname>/_search 
{ 
    "sort": [ 
     { 
     "_type": { 
      "order": "asc" 
     } 
     } 
    ], 
    "query": { 
     <query goes here> 
    } 
} 
+0

這將按字母順序按類型名稱進行排序,但作者希望它按給定順序排列,例如, _television_,_foo_,_bar_ – wajda

0

我通過添加一個數字字段_is_OF_TYPE到索引的文檔並將其設置爲1對於那些給定類型的文檔做到這一點。然後按照您想要的順序排序這些字段。

例如:

Document A: 
{ 
    _is_television: 1, 
    ... some television props here ... 
} 

Document B: 
{ 
    _is_television: 1, 
    ... another television props here ... 
} 

Document C: 
{ 
    _is_radio: 1, 
    ... some radio props here ... 
} 

and so on... 
在ElasricSearch查詢

然後:

POST radio,television,foo,bar,baz/_search 
{ 
    "sort": [ 
     {"_is_television": {"unmapped_type" : "long"}}, // television goes first 
     {"_is_radio":  {"unmapped_type" : "long"}}, // then radio 
     {"_is_another_type": {"unmapped_type" : "long"}} // ... and so on 
    ] 
} 

這種解決方案的優點是速度。您只需對數字字段進行排序。不需要腳本排序。