我想按字段存在来对ES搜索结果进行排序, 说我得到了场地"价格"并且希望所有有价格的结果都在最重要的位置,而没有它的所有结果都在底部。 我知道你可以做一个简单的排序并添加"缺少":" _last" e.g:
{"排序" :[{'价格':{'缺少':' _last','订单':' asc'}} ]}
但在这种情况下,结果也会按价格排序,我不想要它。
有没有办法在没有脚本的情况下做到这一点?
答案 0 :(得分:2)
可以使用function score来实现这一目标 这将涉及使用weight来减少不包含特定字段的文档的分数。
示例:
{
"query": {
"function_score": {
"functions": [
{
"weight": 0.5,
"filter": {
"missing": {
"field": "price"
}
}
}
],
"query": {
"match_all": {}
}
}
}
}
以上情况会导致现场价格较高的单据。