我有一个ElasticSearch-搜索模板,该模板传递一个字段名称来执行排序顺序。因此,如果参数名称是按名称排序,则参数日期是按年龄排序,如果性别则按性别排序。
我一直试图在搜索结束时始终将所有空值(包括空的“”字符串)放在排序字段上。
字段是
"name": {
"type": "keyword",
}
"age": {
"type": "byte"
},
"gender":{
"type":"keyword"
}
我尝试了以下方法:
- missing: "_last"
- missing: "_first"
都不使用关键字
无痛脚本编写,根据类型来增强非空字段,不幸的是,它没有设法使之生效
尝试按属性类型进行匹配以增强功能,但也无法使该功能起作用
“模板”:{ “ from”:“ {{from}}”, “ size”:“ {{size}}”, “排序”:[ “_得分了”, { “ {{sortField}}”:{ “ order”:“ {{sortOrder}}” } } ], “查询”:{ “布尔”:{ “应该”:[ { “ constant_score”:{ “过滤器”:{ “布尔”:{ “一定不”: [ { “比赛”: { “ {{sortField1}}”:“” } } ], “ _name”:“非空字符串” } }, “提升”:1000 } } ], } } }
预期结果:(空为空白或空白)
姓名|年龄|性别
詹姆斯| 31 |男
简|空|女
Lizie | 28 | null |
年龄顺序:
ASC:
姓名|年龄|性别
Lizie | 28 | null |
詹姆斯| 31 |男
简|空|女
DESC:
姓名|年龄|性别
詹姆斯| 31 |男
Lizie | 28 | null |
简|空|女
性别顺序:
Asc:
姓名|年龄|性别
简|空|女
詹姆斯| 31 |男
Lizie | 28 | null |
描述: 名称|年龄|性别
詹姆斯| 31 |男
简|空|女
Lizie | 28 | null |
所以我的问题是我如何才能知道与值sortField一起传递的字段名称Name,Age或Gender。手动匹配正确的提升规则?