ElasticSearch -如何在按字段排序时将缺少的字段视为0?

wgx48brx  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(172)

我试图按double字段(称为ranking)进行排序,但该字段没有完全填充。如果我试图按ranking字段进行排序,则没有ranking值的字段将被视为Infinity
我已经知道,在排序时可以将缺少的字段视为_first_last。但是,在按字段排序时,有没有办法将缺少的字段值视为0呢?

p8h8hvxi

p8h8hvxi1#

如果我没理解错的话,在这种情况下你可以使用排序脚本。

POST idx_my/_bulk
{"index":{}}
{"name":"A", "ranking": 20.0 }
{"index":{}}
{"name":"B", "ranking": null }

POST idx_my/_search
{
   "query": {
      "match_all": {}
   },
   "sort": {
      "_script": {
         "script": "if(doc['ranking'].size() == 0) { return 0.0; } else { return doc['ranking'].value; }",
         "type": "number",    
         "order": "desc"
      }
   }
}

相关问题