为了账号安全,请及时绑定邮箱和手机立即绑定

Elasticsearch 排序,用另一个替换缺失的字段

Elasticsearch 排序,用另一个替换缺失的字段

PHP
POPMUISE 2021-06-16 17:22:49
我有一些产品想按价格排序。它们有两个属性,product_price一个special_price.special_price并不总是出现在文档中。在阅读文档时,您似乎可以添加一个missing元素并让它搜索此元素。我在请求中添加了以下内容:"sort" : [        { "special_price" : {"missing" : "product_price"} },],文档状态:缺失参数指定应如何处理缺失字段的文档:缺失值可以设置为 _last、_first 或自定义值(将用于缺失文档作为排序值)。我还尝试将回退值指定为"sort" : [        { "special_price" : {"missing" : "doc['product_price'].value"} },],我看不到这里缺少什么?
查看完整描述

1 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

missing支持三个值 _last、_first 或自定义值(一个数字)。您不能将其他字段指定为missing参数值。由于您想回退到不同字段的值,因此您可以使用基于脚本的排序。


所以排序可以定义为:


{

  "sort": {

    "_script": {

      "type": "number",

      "script": {

        "lang": "painless",

        "source": "if(doc['special_price'].size() != 0) { return doc['special_price'].value; } return doc['product_price'].value;"

      },

      "order": "desc"

    }

  }

}


查看完整回答
反对 回复 2021-06-25
  • 1 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信