栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于Mysql理解 Java RestHighLevelClient ES查询语句

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Mysql理解 Java RestHighLevelClient ES查询语句

//起手构建请求
SearchRequest request = new SearchRequest();

request常用操作:

  1. 指定索引,可传入多个索引,支持通配符*
    request.indices(String[] tables) 等同于 select xx from table1,table2…

//构建查询
SearchSourceBuilder builder = new SearchSourceBuilder();

builder常用操作:

  1. 分页查询
    builder.from(0)
    builder.size(10) 等同于 limit 1,10
  2. 排序
    builder.sort(“age”, SortOrder.DESC) 等同于 order by age desc
  3. 过滤字段
    String[] includes = {“name”};
    String[] excludes = {};
    query3.fetchSource(includes, excludes); 等同于 select name from index

//给SearchSourceBuilder设置查询条件

  1. builder.query(QueryBuilder queryBuilder);
    // 聚合查询操作

  2. builder.aggregation(AggregationBuilder aggregation);

    常用QueryBuilder :

    1. QueryBuilders.matchAllQuery() 等同于 select * from index
    2. QueryBuilders.matchQuery() 等同于 select * from index where xxx
    3. QueryBuilders.boolQuery() 布尔类型查询,可传入多个各种QueryBuilder,构建更复杂的查询,每个QueryBuilder 相当于加了个()
    4. QueryBuilders.rangeQuery() 范围查询 等同于 where flied < and > filed
    5. QueryBuilders.fuzzyQuery() 模糊查询 .fuzziness() 函数指定模糊字符偏移量

    常用AggregationBuilder :

    1. AggregationBuilders.max(“maxAge”).field(“age”); 最大值,等同于函数 select max(“age”) as maxAge
    2. AggregationBuilders.terms(“ageGroup”).field(“age”); 分组查询,等同于 group by age
QueryBuilders.boolQuery()常用函数:
1. 多个must(QueryBuilder)          等同于  ( QueryBuilder1 ) and ( QueryBuilder2 ) 多个must 取 ∩ 交集
2. 多个should(QueryBuilder)        等同于  ( QueryBuilder1 ) or  ( QueryBuilder2 )  多个should 取 ∪ 并集
3. 单个must/should                 等同于  where xx = xx,单个must/should传入的QueryBuilder,符合这个条件

        //must -> SQL ‘=’ ‘and’
        boolQueryBuilder.must(QueryBuilders.matchQuery("age", "24"));
        //should -> SQL ‘or’
        boolQueryBuilder.should(QueryBuilders.matchQuery("age", "24"));
        boolQueryBuilder.should(QueryBuilders.matchQuery("age", "25"));
        
        
QueryBuilders.rangeQuery()常用函数:  
4. rangeQuery.gte("25");           大于,对于指定字段进行大小判断
5. rangeQuery.lte("30");           小于,对于指定字段进行大小判断

request.source(query);

SearchResponse response = client.search(request, RequestOptions.DEFAULT);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/862792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号