2013-12-10 45 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