当我做
之类的事情时 {
"sort": [
{
"name": {"order": "desc"}
}
]}
结果名称在该名称字符串本身内排序,而不是整个结果:
"name" : "Test asdf"
排序值是
"sort": ["asdf"]
这是预期的吗?如何通过名称字段对结果进行整理排序并按指定顺序排序(asc与desc)
感谢任何帮助,谢谢!
答案 0 :(得分:1)
如果您无法将映射更改为not_analyzed
或使用keyword
分析器,请使用脚本进行排序:
{
"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_sorting_script.groovy
仅包含_source.name
,应放在/config/scripts
目录下。