我是靠谱客的博主 朴素小霸王,这篇文章主要介绍elasticsearch教程3之高级查询全量查询条件查询分页查询查询排序过滤字段组合条件查询范围查询模糊查询高亮查询聚合查询分组查询,现在分享给大家,希望可以做个参考。

文章目录

  • 全量查询
  • 条件查询
  • 分页查询
  • 查询排序
  • 过滤字段
  • 组合条件查询
  • 范围查询
  • 模糊查询
  • 高亮查询
  • 聚合查询
  • 分组查询

全量查询

  • key: sourceBuilder.query(QueryBuilders.matchAllQuery());
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 创建搜索请求对象 SearchRequest request = new SearchRequest(); request.indices("user"); // 构建查询的请求体 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 查询所有数据 sourceBuilder.query(QueryBuilders.matchAllQuery()); request.source(sourceBuilder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); // 查询匹配 SearchHits hits = response.getHits(); System.out.println("took:" + response.getTook()); System.out.println("timeout:" + response.isTimedOut()); System.out.println("total:" + hits.getTotalHits()); System.out.println("MaxScore:" + hits.getMaxScore()); System.out.println("hits========>>"); for (SearchHit hit : hits) { //输出每条查询的结果信息 System.out.println(hit.getSourceAsString()); } System.out.println("<<========");

条件查询

复制代码
1
2
3
其他同上 sourceBuilder.query(QueryBuilders.termQuery("age", "30"));

分页查询

复制代码
1
2
3
4
5
6
7
8
9
10
// 构建查询的请求体 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchAllQuery()); // 分页查询 // 当前页其实索引(第一条数据的顺序号), from sourceBuilder.from(0); // 每页显示多少条 size sourceBuilder.size(2); request.source(sourceBuilder);

查询排序

复制代码
1
2
sourceBuilder.sort("age", SortOrder.ASC);

过滤字段

复制代码
1
2
3
4
String[] excludes = {"age"}; String[] includes ={}; builder.fetchSource(includes,excludes);

组合条件查询

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SearchRequest request = new SearchRequest(); request.indices("user"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); // 必须包含 boolQueryBuilder.must(QueryBuilders.matchQuery("age", "30")); // 一定不含 boolQueryBuilder.mustNot(QueryBuilders.matchQuery("name", "zhangsan")); // 可能包含 boolQueryBuilder.should(QueryBuilders.matchQuery("sex", "男")); boolQueryBuilder.should(QueryBuilders.matchQuery("sex", "女")); sourceBuilder.query(boolQueryBuilder); request.source(sourceBuilder);

范围查询

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
SearchRequest request = new SearchRequest(); request.indices("user"); // 构建查询的请求体 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age"); // 大于等于 //rangeQuery.gte("30"); // 小于等于 rangeQuery.lte("40"); sourceBuilder.query(rangeQuery); request.source(sourceBuilder);

模糊查询

复制代码
1
2
3
4
5
6
7
8
SearchRequest request = new SearchRequest(); request.indices("user"); // 构建查询的请求体 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.fuzzyQuery("name","wangwu").fuzziness(Fuzziness.ONE)); //允许相差不大于1个字符 request.source(sourceBuilder);

高亮查询

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SearchRequest request = new SearchRequest().indices("user"); //2.创建查询请求体构建器 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //构建查询方式:高亮查询 TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("name","zhangsan"); //设置查询方式 sourceBuilder.query(termsQueryBuilder); //构建高亮字段 HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.preTags("<font color='red'>");//设置标签前缀 highlightBuilder.postTags("</font>");//设置标签后缀 highlightBuilder.field("name");//设置高亮字段 //设置高亮构建对象 sourceBuilder.highlighter(highlightBuilder); //设置请求体 request.source(sourceBuilder);

查询结果

复制代码
1
2
3
4
5
hits::::>> {"name":"zhangsan","age":"10","sex":"女"} {name=[name], fragments[[<font color='red'>zhangsan</font>]]} <<::::

聚合查询

复制代码
1
2
3
4
5
6
7
SearchRequest request = new SearchRequest().indices("user"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.aggregation(AggregationBuilders.max("maxAge").field("age")); //设置请求体 request.source(sourceBuilder);

分组查询

复制代码
1
2
3
4
5
6
7
SearchRequest request = new SearchRequest().indices("user"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.aggregation(AggregationBuilders.terms("age_groupby").field("age")); //设置请求体 request.source(sourceBuilder);

最后

以上就是朴素小霸王最近收集整理的关于elasticsearch教程3之高级查询全量查询条件查询分页查询查询排序过滤字段组合条件查询范围查询模糊查询高亮查询聚合查询分组查询的全部内容,更多相关elasticsearch教程3之高级查询全量查询条件查询分页查询查询排序过滤字段组合条件查询范围查询模糊查询高亮查询聚合查询分组查询内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部