Es查詢
阿新 • • 發佈:2022-05-10
複合查詢
複合查詢就是把一些簡單查詢組合在一起實現更復雜的查詢需求,除此之外,複合查詢還可以控制另外一個查詢的行為。
bool query
bool 查詢可以把任意多個簡單查詢組合在一起,使用 must、should、must_not、filter 選項來表示簡單查詢之間的邏輯,每個選項都可以出現 0 次到多次,它們的含義如下:
- must 文件必須匹配 must 選項下的查詢條件,相當於邏輯運算的 AND,且參與文件相關度的評分。
- should 文件可以匹配 should 選項下的查詢條件也可以不匹配,相當於邏輯運算的 OR,且參與文件相關度的評分。
- must_not 與 must 相反,匹配該選項下的查詢條件的文件不會被返回;需要注意的是,must_not 語句不會影響評分,它的作用只是將不相關的文件排除
- filter 和 must 一樣,匹配 filter 選項下的查詢條件的文件才會被返回,但是 filter 不評分,只起到過濾功能,與 must_not 相反。
假設要查詢 title 中包含關鍵詞 java,並且 price 不能高於 70,description 可以包含也可以不包含虛擬機器的書籍,構造 bool 查詢語句如下:
GET tablesname(表名)/_search
{
"query": {
"bool": {
"must":
{
"match": {
"fields(欄位)":"value(值)"
}
}
}
}
}
示例:
GET books/_search { "query": { "bool": { "filter": { "term": { "status": 1 } }, "must_not": { "range": { "price": { "gte": 70 } } }, "must": { "match": { "title": "java" } }, "should": [ { "match": { "description": "虛擬機器" } } ], "minimum_should_match": 1 } } }