[英]Filter Then Sort Results By Query in ElasticSearch
ElasticSearch中有沒有一種方法可以運行布爾過濾器,然后無需進一步重新定義搜索,而是基於multi_field查詢對結果進行排序/排序?
例如:獲取status_id = 1
所有項目(過濾器),然后使用關鍵字“ red car”( name
和description
包含這些關鍵字的文檔為第一,不含關鍵字的文檔為最后)對這些文檔進行排序。
您可以使用布爾查詢-根據應有的條件-
子句(查詢)應出現在匹配的文檔中。 在沒有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.