首页 归档 关于 文件 Github
×

SpringBoot整合ElasticSearch-v6.8.1的使用 - 6.索引的数据(查询)

2022-03-07 17:23:41
ElasticSearch
  • SpringBoot
本文总阅读量(次):
本文字数统计(字):928
本文阅读时长(分):4

SpringBoot整合ElasticSearch-v6.8.1的封装 - 1.配置类
SpringBoot整合ElasticSearch-v6.8.1的封装 - 2.接口类
SpringBoot整合ElasticSearch-v6.8.1的封装 - 3.支持类
SpringBoot整合ElasticSearch-v6.8.1的使用 - 4.索引的创建与删除
SpringBoot整合ElasticSearch-v6.8.1的使用 - 5.索引的数据(增删改)

在 ES 当中提供了 bool 查询,一个 bool 查询可以包含一个或多个查询字句,支持以下四种查询:

  • must:必须匹配,贡献算分
  • should:选择性匹配,贡献算分
  • must_not:查询字句,必须不能匹配
  • filter:必须匹配,不贡献算分

查询ES索引数据_全部

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@Test
void 查询ES索引数据_全部() {
String index = "my_index";
try {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// 根据_id查询
boolQueryBuilder.must(QueryBuilders.termQuery("_id", "33"));

// 精确条件(单值查询)
boolQueryBuilder.must(QueryBuilders.termQuery("account", "admin"));
// 精确条件(多值查询)
boolQueryBuilder.must(QueryBuilders.termsQuery("keyId", Arrays.asList("22", "33")));

// 模糊查询(查询全部)
boolQueryBuilder.must(QueryBuilders.matchAllQuery());
// 模糊查询(会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到)
boolQueryBuilder.must(QueryBuilders.matchQuery("username", "临管"));
// 模糊查询(不会将搜索词分词,会精确匹配查询的短语,需要全部单词和顺序要完全一样)
boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("username", "时管理员"));
// 模糊查询(不会将搜索词分词,会精确匹配查询的短语,需要全部单词和顺序要完全一样同时需要前缀匹配,中英有出入)
boolQueryBuilder.must(QueryBuilders.matchPhrasePrefixQuery("username", "临时管理"));
// 模糊查询(匹配搜索多个字段,minimumShouldMatch:设置匹配度, field:提升字段的得分权限,每个结果搜索出来后都会有一个得分)
boolQueryBuilder.must(QueryBuilders.multiMatchQuery("用户", Arrays.asList("username", "address.region").toArray(new String[0])).minimumShouldMatch("50%"));
boolQueryBuilder.must(QueryBuilders.multiMatchQuery("浦东新区", Arrays.asList("username", "address.location.city").toArray(new String[0])).minimumShouldMatch("50%"));

// 范围值查询 lt小于value的值,小于等于是lte、大于是gt、大于等于是gte
boolQueryBuilder.must(QueryBuilders.rangeQuery("age").lt(30));
// 范围时间查询 lt小于value的值,小于等于是lte、大于是gt、大于等于是gte
boolQueryBuilder.must(QueryBuilders.rangeQuery("createdTime").lt("2122-12-22 12:33:33"));

// 过滤器查询(不分词查询,必须匹配,不贡献算分)
boolQueryBuilder.filter(QueryBuilders.termQuery("account", "admin"));

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(boolQueryBuilder);

// 设置源字段过虑,第一个参数结果集包括哪些字段,第二个参数表示结果集不包括哪些字段
String[] includes = {"keyId", "username", "account", "createdTime", "role","birthday","address","age"};
String[] excludes = {"keyId"};
searchSourceBuilder.fetchSource(includes, excludes);

// 排序(对查询后结果进行排序,DESC:倒序-从大到小,ASC:顺序-从小到大,含有优先序列)
searchSourceBuilder.sort("age", SortOrder.ASC).sort("birthday",SortOrder.DESC);

// 设置高亮(requireFieldMatch:多次段高亮需要设置为false)
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.preTags("<tag>").postTags("</tag>");
highlightBuilder.field("account").field("username");
searchSourceBuilder.highlighter(highlightBuilder.requireFieldMatch(false));

ElasticSearchDTO elasticSearchDTO = new ElasticSearchDTO().setEsIndex(index).setSearchRequest(new SearchRequest().source(searchSourceBuilder));
List<Map<String, Object>> mapList = elasticSearchService.searchDataList(elasticSearchDTO);
System.out.println(JSON.toJSONString(mapList));
} catch (Exception e) {
e.printStackTrace();
}
}

查询ES索引数据_分页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Test
void 查询ES索引数据_分页() {
String index = "my_index";
try {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// 模糊查询
boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("username", "管理员"));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().query(boolQueryBuilder);

ElasticSearchDTO elasticSearchDTO = new ElasticSearchDTO(1, 10).setEsIndex(index).setSearchRequest(new SearchRequest().source(searchSourceBuilder));
ElasticSearchPage elasticSearchPage = elasticSearchService.searchDataListPage(elasticSearchDTO);
System.out.println(JSON.toJSONString(ElasticSearchListUtil.getData(elasticSearchPage)));
} catch (Exception e) {
e.printStackTrace();
}
}

查询ES索引数据_统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
void 查询ES索引数据_统计() {
String index = "my_index";
try {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("username", "管理员"));

ElasticSearchDTO elasticSearchDTO = new ElasticSearchDTO().setEsIndex(index);
elasticSearchDTO.getCountRequest().source(new SearchSourceBuilder().query(boolQueryBuilder));
System.out.println(elasticSearchService.getIndexCount(elasticSearchDTO));
} catch (Exception e) {
e.printStackTrace();
}
}
完
Redis集群配置 - Cluster(三主三从)
SpringBoot整合ElasticSearch-v6.8.1的使用 - 5.索引的数据(增删改)

本文标题:SpringBoot整合ElasticSearch-v6.8.1的使用 - 6.索引的数据(查询)

文章作者:十二

发布时间:2022-03-07 17:23:41

最后更新:2022-03-16 18:00:54

原始链接:https://www.zhuqiaolun.com/2022/03/1646645021846/1646645021846/

许可协议:署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

头像

十二

我想起那天夕阳下的奔跑,那是我逝去的青春。

分类

  • Blog4
  • ElasticSearch13
  • Freemarker2
  • Git2
  • Go-FastDfs2
  • IDEA2
  • J-Package6
  • J-Tools21
  • Java2
  • JavaFx3
  • Kafka4
  • Linux2
  • Logger5
  • Maven5
  • MyBatis6
  • MyCat3
  • MySql2
  • Nginx5
  • OceanBase1
  • RabbitMq4
  • Redis6
  • SVN1
  • SpringBoot11
  • Tomcat6
  • WebService2
  • Windows2
  • kubernetes10

归档

  • 二月 20251
  • 十二月 20244
  • 八月 202416
  • 六月 20241
  • 九月 20231
  • 八月 20231
  • 七月 20232
  • 八月 20222
  • 三月 202214
  • 二月 20224
  • 十一月 20211
  • 七月 20215
  • 六月 20213
  • 五月 20213
  • 四月 20211
  • 三月 202116
  • 二月 20212
  • 一月 20211
  • 十一月 202014
  • 十月 20201
  • 九月 202014
  • 八月 20205
  • 七月 20204
  • 六月 20208
  • 五月 20208

作品

我的微信 我的文件

网站信息

本站运行时间统计: 载入中...
本站文章字数统计:96.9k
本站文章数量统计:132
© 2025 十二  |  鄂ICP备18019781号-1  |  鄂公网安备42118202000044号
驱动于 Hexo  | 主题 antiquity  |  不蒜子告之 阁下是第个访客
首页 归档 关于 文件 Github