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());
}
}
}