要不要也来分享分享一下啊

ES根据查询条件聚类的实现方法

Elasticsearch | 作者 yeziblo | 发布于2020年07月08日 | 阅读数:2598

各位大佬,想请教一个问题,我现在有一个需求,类似要在ES中实现下面这种sql的功能:
"select distinct(商品类型) from t_goods where 商品编码 like 'xxx%' and 生产时间 < xxxxxxxx"
基本上就是先查询满足条件的数据然后再聚类,请问下面那种方式是正确的啊:
1、builder.query(qb).aggregation(AggregationBuilders.cardinality("DISTINCT_COUNT").field(value_field).precisionThreshold(40000))
2、builder.aggregation(AggregationBuilders.filter("PREFIX_FILTER", qb) .subAggregation(AggregationBuilders.cardinality("DISTINCT_COUNT").field(value_field).precisionThreshold(40000)))

其中qb是查询的条件。

方法1里面,感觉查询条件和聚类方法相当于是平级的,所以我使用了方法2,就是先根据查询条件聚类,再进行去重聚类。

请问下这两种方法都是正确的么…而且我的测试结果是,方法1的速度要快于方法2……

求教各位大佬解惑,如果觉得我的查询方式能优化的话,也请不吝指教。
已邀请:

redhat

赞同来自:

方法1是正确的。

要回复问题请先登录注册