【发布时间】:2017-10-30 22:45:01
【问题描述】:
我正在尝试通过两个不同的字段对 Elastic Search 查询进行排序:
price_sold 和 price_list
我想先按price_sold排序,但如果该值为空,我想再按price_list排序
如果我只是将排序设置为,查询是否正确:
"sort": [
{ "price_sold": { "order": "desc"}},
{ "price_list": { "order": "desc"}}
]
我已经执行了查询,我没有收到任何错误,而且结果似乎是正确的,但是我很好奇我是否忽略了一些东西。
我一直在阅读有关missing 过滤器的信息,以及可能使用custom value。这可能不是必需的,但我不太确定。
如果第一个字段丢失,是否有办法定义第二个字段进行排序,或者这不是必需的?比如:
"sort": [{"price_sold: {"order": "desc", "missing": "doc['field_name']"}]
简单地添加这两种类型会给我想要的结果吗?
谢谢。
【问题讨论】:
-
听起来您没有尝试您要询问的查询...
-
执行查询时遇到什么错误?
-
我已经尝试了查询,第一组排序没有给出错误,我只是好奇是否有更好的方法或者我是否忽略了某些东西。第二个查询不起作用,但这是预期的,因为我无法找到任何支持该格式的文档 - 它更多的是伪代码试图理解这一点。
-
missing有一个sort选项:elastic.co/guide/en/elasticsearch/reference/current/… -
@AndreiStefan 是的,我看到了
missing选项,但是我不认为将其设置为 _first 或 _last 是我想要的。我对custom value很好奇,但没有看到任何其他关于如何在这种情况下使用它的文档。
标签: sorting elasticsearch filter