【发布时间】:2019-08-06 16:01:19
【问题描述】:
我正在尝试对 elasticsearch 中的嵌套字段进行排序,但它总是在排序列表顶部显示具有空值嵌套字段的文档,同时按升序排序。我想排序(按升序和降序)并希望空值嵌套字段文档出现在排序列表的末尾。
这是我正在使用的排序查询:
{
"query": {
"match_all": {}
},
"sort": {
"_script": {
"type": "string",
"order": "asc",
"script": {
"lang": "painless",
"source": "def val=params['_source'].tags; if(val==null){return '';}else{return params['_source'].tags} "
}
}
}
}
以下是我应用的与嵌套“标签”字段相关的映射:
"tags": {
"type": "nested",
"properties": {
"tag": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"analyzer": "index_analyzer",
"search_analyzer": "search_analyzer"
}
}
}
样本负载:
"tags": [
{
"tag": "check"
},
{
"tag": "production"
},
{
"tag": "test"
}
]
【问题讨论】:
-
对不起,我没有时间给出真正的答案,但您的用例只是一个标准的嵌套排序,缺少:“_last”属性。在此处查看文档elastic.co/guide/en/elasticsearch/reference/7.3/…
-
我试过这个,但每当我尝试对缺少标签字段的文档进行排序时,它都会给出空指针异常。
-
我认为你不明白:p 你不需要自定义脚本来做到这一点。我会在一分钟内给出真正的答案:)
标签: elasticsearch