赞
踩
QueryBuilders提供了大量的静态方法,用于生成各种不同类型的查询对象,例如:词条、模糊、通配符等QueryBuilder对象。
NativeSearchQueryBuilder:Spring提供的一个查询条件构建器,帮助构建json格式的请求体
- public List<Article> getByContentNative(String content) {
- MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("content", content);
- NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
- queryBuilder.withQuery(matchQueryBuilder);
- SearchHits<Article> searchHits = elasticsearchRestTemplate.search(queryBuilder.build(), Article.class);
- return searchHits.get().map(SearchHit::getContent).collect(Collectors.toList());
- }
聚合取数据
addAggretion方法
- /**
- * 根据type聚合
- */
- public void getCountByTypes() {
- NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder();
- // 设置要查询的字段
- nativeSearchQueryBuilder.withSourceFilter(new FetchSourceFilter(new String[]{""}, null));
- // 设置一下查询的条数
- nativeSearchQueryBuilder.withPageable(PageRequest.of(0, 1));
- // 设置聚合字段,指定聚合后的字段名,以及根据哪个字段聚合
- nativeSearchQueryBuilder.addAggregation(AggregationBuilders.terms("typeCount").field("types"));
- // 搜索
- SearchHits<Article> searchHits = elasticsearchRestTemplate.search(nativeSearchQueryBuilder.build(), Article.class);
- // 取出来聚合的数据
- Aggregations aggregations = searchHits.getAggregations();
- // 取出我们聚合的字段
- Terms terms = aggregations.get("typeCount");
- List<? extends Terms.Bucket> buckets = terms.getBuckets();
- for (Terms.Bucket bucket : buckets) {
- System.out.println(bucket.getKey());
- System.out.println(bucket.getDocCount());
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。