一尘不染

字符串上的Elasticsearch排序未返回预期结果

elasticsearch

在对包含多个单词的字符串字段进行排序时,Elasticsearch会拆分字符串值,并使用min或max作为排序值。IE:按升序对值为“老虎眼”的字段进行排序时,排序值为:“眼”,而按降序进行排序时,值为:“老虎”。

假设我在索引中输入了“老虎之眼”和“死亡之轮”,当我对该字段进行升序排序时,我希望“老虎之眼”是第一个,因为“ E”在“
W”之前,但我在该字段上进行排序时看到的是“死亡轮”首先出现,因为“ D”是该术语的最小值,而“ E”是“ Eye”的最小值老虎”。

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


阅读 277

收藏
2020-06-22

共1个答案

一尘不染

正如mconlin所提到的,如果要在未分析的doc字段上进行排序,则需要指定“ index”:“
not_analyzed”以便按照您的描述进行排序。但是,如果您希望能够将此字段标记化以继续进行搜索,则sloan的[这篇文章显示了一个很好的例子。在Elasticsearch中,使用多字段来为一个字段保留两个不同的映射是很常见的。

希望对您有所帮助,请让我知道是否可以提供更多解释。

2020-06-22