目录
第1关:常见基本查询
任务描述
本关任务:查询出索引中需要指定要求的所有数据。
相关知识
为了完成本关任务,你需要掌握:
1.常见基本查询。
常见基本查询
1、match查询(模糊匹配)。
查询所有文档内容。
QueryBuilder builder = QueryBuilders.matchAllQuery();
匹配查询。
QueryBuilder builder = QueryBuilders.matchQuery("字段名","需要查询匹配的内容");
多字段匹配查询。
QueryBuilder builder = QueryBuilders.multiMatchQuery("需要查询匹配的内容","字段名","字段名",...);
案例:查询出字段stu_address中对象带有 湖南 的文档内容。
QueryBuilder builder = QueryBuilders.matchQuery("stu_address","湖南");
SearchResponse sResponse = client.prepareSearch("blog").setQuery(builder).get();
SearchHits hits = sResponse.getHits();
for(SearchHit hit:hits) {
//打印内容
System.out.println(hit.getSourceAsString());
}
结果返回:
{"stu_name":"李四","stu_address":"湖南长沙"}
{"stu_name":"张四","stu_address":"湖南湘潭"}
2、term查询和terms查询(精准查询)。
term查询——单字段精准查询对象。
QueryBuilder builder = QueryBuilders.termQuery("字段名","需要查询匹配的内容");
terms查询——单字段查询多个对象。
QueryBuilder builder = QueryBuilders.termsQuery("字段名","需要查询匹配的内容","需要查询匹配的内容",...);
案例:查询出年龄为18岁和19岁的用户。
QueryBuilder builder = QueryBuilders.termsQuery("age","18","19");
SearchResponse sResponse = client.prepareSearch("blog2").setQuery(builder).get();
for(SearchHit hit:hits) {
//打印内容
System.out.println(hit.getSourceAsString());
}
结果返回:
{"first_name":"欣儿","last_name":"xin","age":19,"date":"2020-02-03"}
{"first_name":"五","last_name":"wang","age":19,"date":"2018-02-03"}
3、Query查询。
范围区间查询。
lt小于
lte小于等于
gt大于
gte大于等于
from().to()范围区间
QueryBuilder builder = QueryBuilders.rangeQuery("字段名").from("区间左边").to("区间右边");
前缀匹配查询。
QueryBuilder builder = QueryBuilders.prefixQuery("字段名", "前缀字符");
通配符查询。
如若前缀模糊查询就只需要匹配的内容*,后缀模糊查询*匹配的内容。
QueryBuilder builder = QueryBuilders.wildcardQuery("字段名", "*匹配的内容*");
ID查询。
QueryBuilder builder = QueryBuilders.idsQuery().addIds("ID名","ID名",...);
字符精准查询(只查找出text格式的字段)。
QueryBuilder builder =QueryBuilders.commonTermsQuery("字段名","匹配的内容");
对象条件查询。
queryStringQuery,+表示需要,-表示不需要(条件必须同时满足相当于且)。
QueryBuilder builder =QueryBuilders.queryStringQuery("+需要匹配的内容 -不需要匹配的内容");
simpleQueryStringQuery,+表示需要,-表示不需要(条件不需要同时满足相当于或)。
QueryBuilder builder =QueryBuilders.simpleQueryStringQuery("+需要匹配的内容 -不需要匹配的内容");
案例:查找出2018-02-03注册或者不是18岁的用户。
QueryBuilder builder =QueryBuilders.simpleQueryStringQuery("+2018-02-03 -20");
SearchResponse sResponse = client.prepareSearch("blog2").setQuery(builder).get();
for(SearchHit hit:hits) {
//打印内容
System.out.println(hit.getSourceAsString());
}
结果返回:
{"first_name":"五","last_name":"wang","age":19,"date":"2018-02-03"}
{"first_name":"六","last_name":"wang","age":18,"date":"2018-02-03"}
4、过滤查询。
以前过滤查询 filteredQuery 也可以

最低0.47元/天 解锁文章
928

被折叠的 条评论
为什么被折叠?



