过滤
過濾(filter)
條件查詢中進行過濾
所有的查詢都會影響到文檔的評分及排名。如果我們需要在查詢結果中進行過濾,并且不希望過濾條件影響評分,那么就不要把過濾條件作為查詢條件來用。而是使用filter方式:
GET /learn/_search {"query":{"bool":{"must":{ "match": { "title": "小米手機" }},"filter":{"range":{"price":{"gt":2000.00,"lt":3800.00}}}}} }注意:filter中還可以再次進行bool組合條件過濾。
?
無查詢條件,直接過濾
如果一次查詢只有過濾,沒有查詢條件,不希望進行評分,我們可以使用constant_score取代只有 filter 語句的 bool 查詢。在性能上是完全相同的,但對于提高查詢簡潔性和清晰度有很大幫助。
GET /learn/_search {"query":{"constant_score": {"filter": {"range":{"price":{"gt":2000.00,"lt":3000.00}}}} }?
總結