【ES】---Aggregation聚合,遇到String类型如何分组

目录

一、左右模糊查询

在单纯搜索中,要达到左右模糊查询,可采用 fuzzyQuery: 左右模糊查询 【不分词,fuzziness的参数作用是在查询时,es动态的将查询关键词前后增加或者删除一个词,然后进行匹配】。

例如:

java 复制代码
FuzzyQueryBuilder fuzzyQueryBuilder = QueryBuilders.fuzzyQuery(fieldName, input).fuzziness(Fuzziness.ONE);
searchSourceBuilder.query(fuzzyQueryBuilder);

二、遇到string类型进行聚合分组

在一些聚合中,按照一定要求聚合,遇到string类型进行聚合分组。

2.1、string类型分组

如果是完整string类型分组:

java 复制代码
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("group_by_extension")
        .script(new Script("doc['extension.keyword'].value.toUpperCase()")).size(Integer.MAX_VALUE);
//'extension是类型pdf,xlsx等
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.size(0);
searchSourceBuilder.query(boolQueryBuilder); //查询匹配条件
searchSourceBuilder.aggregation(aggregationBuilder); //分组聚合条件

2.2、Date类型(format)分组

java 复制代码
//由于(String类型)time存储形式是2023-07-23 00:00:06,而根据统计要求,按照月份维度进行统计,所以需要对create_time字段值进行转换下
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("group_by_time")
        .script(new Script("doc['create_time.keyword'].value.substring(0, 7)")).size(Integer.MAX_VALUE);
相关推荐
Elasticsearch3 小时前
Elasticsearch:默认更轻量 - 从 source 中排除向量
elasticsearch
{⌐■_■}21 小时前
【ElasticSearch】使用docker compose,通过编写yml安装es8.15和kibana可视化界面操作,go连接es
elasticsearch·docker·golang
dxt_snow21 小时前
docker在自定义网络中安装ElasticSearch和Kibana
网络·elasticsearch·docker
Elasticsearch1 天前
使用 LLMs 快速构建 Elastic connector:一个 Crawl4AI 教程
elasticsearch
沐风清扬1 天前
SpringAI1.0.1实战教程:避坑指南25年8月最新版
java·大数据·elasticsearch·搜索引擎·springai
尚雷55801 天前
生产ES环境如何申请指定索引模式下的数据查看权限账号
大数据·elasticsearch·搜索引擎
knqiufan2 天前
面向海量关系型数据的实时全文检索:从 Elasticsearch 到 Logstash 的架构解析
elasticsearch·etl
代码的余温2 天前
Elasticsearch Master选举机制解析
大数据·elasticsearch·搜索引擎
猿java2 天前
Elasticsearch有哪几种分页方式?该如何选择?
后端·elasticsearch·架构
Hello.Reader2 天前
在 Ruby 客户端里用 ES|QL
elasticsearch·jenkins·ruby