Sorting 弹性搜索对字符串本身中的单词进行排序,而不是对整个结果进行排序
当我做这样的事情时Sorting 弹性搜索对字符串本身中的单词进行排序,而不是对整个结果进行排序,sorting,elasticsearch,Sorting,elasticsearch,当我做这样的事情时 { "sort": [ { "name": {"order": "desc"} } ]} 结果名称在名称字符串本身内排序,而不是按结果作为一个整体排序: "name" : "Test asdf" 排序值为 "sort": ["asdf"] 这是预期的吗?我如何才能得到它?按名称字段将结果作为一个整体进行排序,并按指定顺序对其排序(asc vs.desc) 感谢您的帮助,谢谢 如果无法将映射更改为未分析或使用关键字分析器,请使用
{
"sort": [
{
"name": {"order": "desc"}
}
]}
结果名称在名称字符串本身内排序,而不是按结果作为一个整体排序:
"name" : "Test asdf"
排序值为
"sort": ["asdf"]
这是预期的吗?我如何才能得到它?按名称字段将结果作为一个整体进行排序,并按指定顺序对其排序(asc vs.desc)
感谢您的帮助,谢谢 如果无法将映射更改为
未分析
或使用关键字
分析器,请使用脚本进行排序:
{
"query": {
"match_all": {}
},
"sort": {
"_script": {
"script": "_source.name",
"lang": "groovy",
"type": "string",
"order": "desc"
}
}
}
当然,这需要启用动态脚本。如果无法启用或不想启用,请将脚本放在文件中并在查询中使用:
{
"query": {
"match_all": {}
},
"sort": {
"_script": {
"script_file": "source_sorting_script",
"lang": "groovy",
"type": "string",
"order": "asc"
}
}
}
其中
source\u sorting\u script.groovy
只包含\u source.name
,应该放在/config/scripts
目录下。在映射中,将name a的一个版本设置为not analysis,该版本应该用于排序。如果我无法修改映射,有没有办法解决?