一、左右模糊查询
在单纯搜索中,要达到左右模糊查询,可采用 fuzzyQuery: 左右模糊查询 【不分词,fuzziness的参数作用是在查询时,es动态的将查询关键词前后增加或者删除一个词,然后进行匹配】。
例如:
FuzzyQueryBuilder fuzzyQueryBuilder = QueryBuilders.fuzzyQuery(fieldName, input).fuzziness(Fuzziness.ONE);
searchSourceBuilder.query(fuzzyQueryBuilder);
二、遇到string类型进行聚合分组
在一些聚合中,按照一定要求聚合,遇到string类型进行聚合分组。
2.1、string类型分组
如果是完整string类型分组:
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)分组
//由于(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);