【ES】---集計、文字列型に遭遇した場合のグループ化方法

1. 左右のあいまいクエリ

単純な検索では、左と右のファジー クエリを実現するために、fuzzyQuery を使用できます。 左と右のファジー クエリ [単語分割なし、ファジー パラメーターの機能は、クエリ中にクエリ キーワードの前後に 1 つの単語を動的に追加または削除することです。 、その後一致します]。
例えば:

FuzzyQueryBuilder fuzzyQueryBuilder = QueryBuilders.fuzzyQuery(fieldName, input).fuzziness(Fuzziness.ONE);
searchSourceBuilder.query(fuzzyQueryBuilder);

2. 文字列型に遭遇した場合の集計とグループ化

一部の集計では、特定の要件に従って集計が実行され、集計のグループ化に文字列型が使用されます。

2.1. 文字列型のグループ化

完全な文字列型のグループ化の場合:

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. 日付の種類(形式)のグループ化

//由于(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);

おすすめ

転載: blog.csdn.net/xunmengyou1990/article/details/132802279