1、题记
Elasticsearch有没有类似mysql的distinct的去重功能呢?
1)如何去重计数?
类似mysql: select distinct(count(1)) from my_table;
2)如何获取去重结果。
类似mysql:SELECT DISTINCT name,age FROM users;
2、需求
1)对ES的检索结果进行去重统计计数。
2)对ES的检索结果去重后显示。
3、分析
1)统计计数需要借助ES聚合功能结合cardinality实现。
2)去重显示结果有两种方式:
方式一:使用字段聚合+top_hits聚合方式。
方式二:使用collapse折叠功能。
4、DSL源码
1)统计去重数目。
GET books/_search
{
“size”: 0,
“aggs”: {
“books_count”: {
“cardinality”: {
“field”: “name_keyword”
}
}
}
}