当对包含多个单词的字符串字段进行排序时,Elasticsearch 会拆分字符串值并使用最小值或最大值作为排序值。即:当对值为“老虎之眼”的字段进行升序排序时,排序值为:“Eye”;当按降序排序时,排序值为:“Tiger”。
假设我的索引中有“老虎之眼”和“死亡之轮”作为条目,当我对此字段进行升序排序时,我希望“老虎之眼”排在第一位,因为“E”出现在“W”之前,但我在这个字段上排序时看到的是,“死亡之轮”首先出现,因为“D”是该术语的最小值,“E”是“眼睛”的最小值的老虎”。
有谁知道如何关闭此行为并仅允许对此字符串字段进行常规排序?
正如 mconlin 提到的,如果您想对未分析的文档字段进行排序,您需要指定“index”:“not_analyzed”以按照您的描述进行排序。但如果您希望能够将此字段标记化以进行搜索,这个帖子 https://stackoverflow.com/questions/21384894/elasticsearch-return-the-complete-value-of-a-facet-for-a-query斯隆提出了一个很好的例子。使用多领域 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-multi-field-type.html在 Elasticsearch 中为一个字段保留两个不同的映射是很常见的。
希望这有帮助,如果我可以提供更多解释,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)