java操作es聚合操作并显示其他字段_ElasticSearch java API - 聚合查询-聚合多字段聚合demo...

以球员信息为例,player索引的player type包含5个字段,姓名,年龄,薪水,球队,场上位置。

index的mapping为:

"mappings": {

"player": {

"properties": {

"name": {

"index": "not_analyzed",

"type": "string"

},

"age": {

"type": "integer"

},

"salary": {

"type": "integer"

},

"team": {

"index": "not_analyzed",

"type": "string"

},

"position": {

"index": "not_analyzed",

"type": "string"

}

},

"_all": {

"enabled": false

}

}

}

索引中的全部数据:

首先,初始化Builder:

SearchRequestBuilder sbuilder = client.prepareSearch("player").setTypes("player");

接下来举例说明各种聚合操作的实现方法,因为在es的api中,多字段上的聚合操作需要用到子聚合(subAggregation),初学者可能找不到方法(网上资料比较少,笔者在这个问题上折腾了两天,最后度了源码才彻底搞清楚T_T),后边会特意说明多字段聚合的实现方法。另外,聚合后的排序也会单独说明。

group by/count

例如要计算每个球队的球员数,如果使用SQL语句,应表达如下:

select team, count(*) as player_count from player group by team;

ES的java api:

TermsBuilder teamAgg= AggregationBuilders.terms("player_count ").field("team");

sbuilder.addAggregation(teamAgg);

SearchResponse response = sbuilder.execute().actionGet();

group by多个field

例如要计算每个球队每个位置的球员数,如果使用SQL语句&#

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以使用正则查询(regexp query)来实现ES中的聚合字段的模糊查询。在Java代码中,可以使用QueryBuilders.regexpQuery方法来构建正则查询。以下是一个示例代码: ```java // 1. 创建SearchRequest SearchRequest request = new SearchRequest(index); request.types(type); // 2. 指定查询条件 SearchSourceBuilder builder = new SearchSourceBuilder(); //---------------------------------------------------------- builder.query(QueryBuilders.regexpQuery("field_name", "regex_pattern")); //---------------------------------------------------------- request.source(builder); // 3. 执行查询 SearchResponse resp = client.search(request, RequestOptions.DEFAULT); // 4. 输出结果 for (SearchHit hit : resp.getHits().getHits()) { System.out.println(hit.getSourceAsMap()); } ``` 在上述代码中,你需要将"field_name"替换为你要进行模糊查询的聚合字段的名称,将"regex_pattern"替换为你的正则表达式模式。这样,ES将根据正则表达式模式对聚合字段进行模糊查询,并返回匹配的结果。 #### 引用[.reference_title] - *1* *2* *3* [JavaElasticSearch的各种查询(普通,模糊,前缀,高亮,聚合,范围)](https://blog.csdn.net/weixin_64638001/article/details/125693446)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值