为了账号安全,请及时绑定邮箱和手机立即绑定

计算弹性搜索中的不同值

计算弹性搜索中的不同值

繁星淼淼 2021-10-20 15:23:16
我的数据库中有重复的 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);    }有没有办法在弹性搜索中进行不同的计数?
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-10-20
?
倚天杖

TA贡献1828条经验 获得超3个赞

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


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信