2013-12-10 88 views
2

我有一些數據存儲在elasticsearch與輪胎。假設我有這樣的數據:customer_name/amount。Elasticsearch奇怪的排序結果

現在,當我按量排序時,一切都很好。但是,名稱結果排序時的意外:

這些都是名降序排序的結果:

Lukas Marcus 
Visser 
Visser 
Meik Kalte 
Meik Kalte 
Kalte Meik 
Meik Kalte 
Meik Kalte 
Cust Imp Mc 
Cust Imp Mc 
Cust Imp Mc 
John Doe 
John Doe 
Born Joan 
Born Joan 
Born Joan 
Card Image 
Card Image 
Card Image 
Aelps_Iso 
Aelps_Iso 

排序ASC:

Visser 
Visser 
Cust Imp Mc 
Card Image 
Card Image 
Cust Imp Mc 
Cust Imp Mc 
Aelps_Iso 
Aelps_Iso 
Born Joan 
Born Joan 
Born Joan 
Card Image 
John Doe 
John Doe 
Meik Kalte 
Meik Kalte 
Kalte Meik 
Meik Kalte 
Meik Kalte 
Lukas Marcus 

注意,「維瑟是頂部在兩種情況下的。

查詢參數:

@filters=[{:term=>{"user_id"=>605}}], 
@sort=[{"customer_name"=>{:order=>"asc"}} 

任何提示?

+0

在任何情況下,你檢查[這](https://github.com/karmi/retire/wiki/Sorting-Results)? –

回答

2

我想如果我們正在分析字符串類型的字段,我們不能對它進行排序。

排序時,相關的排序字段值被加載到內存中。這意味着每個分片應該有足夠的內存來容納它們。對於基於字符串的類型,不應分析/標記字段。對於數字類型,如果可能,建議將類型顯式設置爲six_hun類型(如short,integer和float)。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-sort.html#_memory_considerations

+2

若要添加到此,如果您希望稍後對其進行排序,則應將字段設置爲「not_analyzed」。分析可能包括停用詞的刪除和詞幹,這會混淆你的排序(尤其是名稱等專有名詞) – Zach