Elasticsearch按字段排序

时间:2016-06-20 17:39:53

标签: sorting elasticsearch

我想按字段存在来对ES搜索结果进行排序, 说我得到了场地"价格"并且希望所有有价格的结果都在最重要的位置,而没有它的所有结果都在底部。 我知道你可以做一个简单的排序并添加"缺少":" _last" e.g:

  

{"排序" :[{'价格':{'缺少':' _last','订单':' asc'}} ]}

但在这种情况下,结果也会按价格排序,我不想要它。

有没有办法在没有脚本的情况下做到这一点?

1 个答案:

答案 0 :(得分:2)

可以使用function score来实现这一目标 这将涉及使用weight来减少不包含特定字段的文档的分数。

示例:

{
   "query": {
      "function_score": {
         "functions": [
            {
               "weight": 0.5,
               "filter": {
                  "missing": {
                     "field": "price"
                  }
               }
            }
         ],
         "query": {
            "match_all": {}
         }
      }
   }
}

以上情况会导致现场价格较高的单据。