各位大佬,想请教一个问题,我现在有一个需求,类似要在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……
求教各位大佬解惑,如果觉得我的查询方式能优化的话,也请不吝指教。
"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……
求教各位大佬解惑,如果觉得我的查询方式能优化的话,也请不吝指教。
1 个回复
redhat
赞同来自: