【问题标题】:Make a count for distinct values in Elastic search计算弹性搜索中的不同值
【发布时间】:2018-10-01 18:33:23
【问题描述】:

我的数据库中有重复的 id,并且希望获取仅类似于 SQL 中的 SELECT COUNT(DISTINCT column) FROM table 的不同值的计数。

public SearchSourceBuilder createQueryForCount(QueryBuilder queryBuilder, int start, boolean fetchSource, String field){
        logger.info("Creating aggregation count ");

        QueryBuilder finalQuery = QueryBuilders.boolQuery().must(queryBuilder);

        AggregationBuilder aggregationCount = AggregationBuilders.terms("agg").field(USER_ID)
                .subAggregation(AggregationBuilders.topHits("top").explain(false).from(start))
                .subAggregation(AggregationBuilders.count("count").field(field));

        return new SearchSourceBuilder()
                .query(finalQuery)
                .fetchSource(fetchSource)
                .from(start)
                .aggregation(aggregationCount);

    }

有没有办法在 Elastic 搜索中进行不同的计数?

【问题讨论】:

    标签: elasticsearch java


    【解决方案1】:

    您应该寻找基数聚合。 Javadocs 可用here。另外,请记住 elasticsearch 使用近似来权衡性能。您可以在某种程度上使用precision_threshold 来控制它。 here 提供了很好的解释。

    【讨论】:

      【解决方案2】:

      要在弹性搜索中获取不同的值计数,请使用基数聚合。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-10
        • 1970-01-01
        • 1970-01-01
        • 2015-03-27
        • 2020-02-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多