ElasticSearch:排序时如何将缺失字段值视为0?
可以将缺失的ranking字段值视为0排序
当然可以实现,你可以通过自定义脚本排序来把缺失ranking字段的文档值替换为0,具体做法是在排序逻辑里加入判断:如果字段不存在或者为空,就返回0,否则返回字段本身的数值。
举个Elasticsearch的DSL示例:
{ "query": { "match_all": {} }, "sort": [ { "_script": { "type": "number", "script": { "source": "doc['ranking'].size() == 0 ? 0 : doc['ranking'].value" }, "order": "asc" // 可根据需求改为desc } } ] }
这个脚本逻辑很直接:检查当前文档的ranking字段是否存在(doc['ranking'].size() == 0代表字段缺失),如果缺失就用0作为排序值,否则用字段本身的double值参与排序,刚好满足你的需求。
内容的提问来源于stack exchange,提问作者wanderingstu
相关产品推荐
相关产品推荐

