2014-12-31 147 views
0

ElasticSearch中有沒有一種方法可以運行布爾過濾器,然後不進一步重新搜索搜索,根據multi_field查詢對結果進行排序/排序?然後按ElasticSearch中的查詢對結果進行排序

如:獲取與status_id = 1(過濾器)的所有項目,然後通過使用關鍵字「紅車」(文檔,其namedescription包含這些關鍵字第一,文檔,而在後的)命令的文檔。

回答

1

您可以使用布爾查詢 - 按條件應當的 -

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

在我們的案例中,因爲必須和它的數字匹配,所以不會計算得分值。但隨後應條件將被用於單獨計算得分 -

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

實際上,我是這樣做的,減一兩件事,我是做了「必須」作爲過濾器,而不是查詢的一部分。結果,應該是本身,並正在減少結果集。 – Ian

相關問題