簡體   English   中英

過濾然后在ElasticSearch中按查詢對結果進行排序

[英]Filter Then Sort Results By Query in ElasticSearch

ElasticSearch中有沒有一種方法可以運行布爾過濾器,然后無需進一步重新定義搜索,而是基於multi_field查詢對結果進行排序/排序?

例如:獲取status_id = 1所有項目(過濾器),然后使用關鍵字“ red car”( namedescription包含這些關鍵字的文檔為第一,不含關鍵字的文檔為最后)對這些文檔進行排序。

您可以使用布爾查詢-根據應有的條件-

子句(查詢)應出現在匹配的文檔中。 在沒有must子句的布爾查詢中,一個或多個should子句必須與文檔匹配。 可以使用minimum_should_match參數設置應匹配的should子句的最小數量。

在我們的情況下,由於必須存在且其數字匹配,因此不會計算得分值。 但是,應使用條件in單獨計算分數-

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "status_id": 1
          }
        }
      ],
      "should": [
        {
          "multi_match": {
            "query": "red car",
            "fields": [
              "subject",
              "message"
            ]
          }
        }
      ]
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM