query:查詢精確查詢 查詢計算文檔得分 並根據文檔得分進行返回
filter query:過濾查詢 用來在大量數據中篩選出本地查詢相關數據 不會計算文檔得分 經常使用 結果會進行緩存
query和filter經常給配合使用
注意:一旦使用query和filterQuery,es優先執行filter query,再執行query
@SpringBootTest
public class RestHighLevelClientFilterTest {
/*
query:查詢精確查詢 查詢計算文檔得分 並根據文檔得分進行返回
filter query:過濾查詢 用來在大量數據中篩選出本地查詢相關數據 不會計算文檔得分 經常使用 結果會進行緩存
query和filter經常給配合使用
注意:一旦使用query和filterQuery,es優先執行filter query,再執行query
*/
private RestHighLevelClient restHighLevelClient;
@Autowired
public RestHighLevelClientFilterTest(RestHighLevelClient restHighLevelClient) {
this.restHighLevelClient = restHighLevelClient;
}
/**
* 過濾查詢
*/
@Test
public void testFilter() throws IOException {
SearchRequest searchRequest = new SearchRequest();
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder
.query(QueryBuilders.matchAllQuery())//普通查詢
.postFilter(QueryBuilders.termQuery("description", "好吃"));//過濾查詢,可以通過QueryBuilders指定各種查詢條件
searchRequest.source(sourceBuilder);
SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
SearchHit[] hits = search.getHits().getHits();
for (SearchHit hit : hits) {
System.out.println(hit.getSourceAsString());
}
}
}