Elasticsearch对字符串排序不返回预期结果

wil*_*llz 13 sorting elasticsearch

在对包含多个单词的字符串字段进行排序时,Elasticsearch会拆分字符串值并使用min或max作为排序值.IE:当按照升序顺序对值为"老虎之眼"的字段进行排序时,排序值为:"Eye",当按降序排序时,值为:"Tiger".

让我说我的"老虎之眼"和"死亡之轮"作为我的索引中的条目,当我在这个领域进行升序排序时,我预计,"老虎之眼"将成为第一,因为"E"在"W"之前出现,但是当我在这个领域排序时,我看到的是"死亡之轮"首先出现,因为"D"是该术语的最小值而"E"是"眼睛"的最小值老虎".

有谁知道如何关闭此行为,只是允许对此字符串字段进行常规排序?

小智 10

正如mconlin所提到的,如果你想对未经分析的doc字段进行排序,你需要指定"index":"not_analyzed"来按你所描述的那样排序.但是如果你希望能够将这个字段标记为搜索,那么斯隆的这篇文章就是一个很好的例子.在Elasticsearch中,使用多字段字段保留两个不同的映射是很常见的.

希望这有帮助,如果我能提供更多解释,请告诉我.