我有一些我想按价格排序的产品。它们具有两个属性,product_price
和一个special_price
。
special_price
并不总是出现在文档中。阅读文档后,您似乎可以添加missing
元素,并在该元素上进行搜索。
我已将以下内容添加到请求中:
"sort" : [
{ "special_price" : {"missing" : "product_price"} },
],
文档状态:
missing参数指定缺少字段的文档 应该处理:缺少的值可以设置为_last,_first或a 自定义值(将用于缺少文档的排序值)。
我还尝试将后备值指定为
"sort" : [
{ "special_price" : {"missing" : "doc['product_price'].value"} },
],
我看不到我在这里想念什么?
答案 0 :(得分:1)
missing
支持三个值_last,_first或自定义值(一个数字)。您不能将其他字段指定为missing
参数的值。由于您希望回退到其他字段的值,因此可以使用script based sorting。
因此排序可以定义为:
{
"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"
}
}
}