写一个ElasticSearch中根据jcx分组统计sjid去重的结果
可以使用ElasticSearch的聚合(aggregation)功能来实现根据jcx分组统计sjid去重的结果。
具体的聚合查询语句如下:
GET /my_index/_search
{
"size": 0,
"aggs": {
"group_by_jcx": {
"terms": {
"field": "jcx.keyword"
},
"aggs": {
"distinct_sjid": {
"cardinality": {
"field": "sjid.keyword"
}
}
}
}
}
}
解释一下上述查询语句:
size:查询结果的大小,这里设为0表示只返回聚合结果,不返回具体的文档数据。aggs:指定聚合查询语句的聚合条件。group_by_jcx:根据jcx字段进行分组聚合。terms:指定按照哪个字段进行分组,这里使用了jcx.keyword,表示使用jcx字段的关键字类型进行分组。distinct_sjid:对于每个分组,统计sjid字段的去重个数。cardinality:使用cardinality聚合函数,表示统计去重个数。field:指定聚合函数作用的字段,这里使用了sjid.keyword,表示使用sjid字段的关键字类型进行统计。
执行上述查询语句后,可以得到类似如下的结果:
{
"aggregations": {
"group_by_jcx": {
"buckets": [
{
"key": "jcx1",
"doc_count": 100,
"distinct_sjid": {
"value": 50
}
},
{
"key": "jcx2",
"doc_count": 200,
"distinct_sjid": {
"value": 80
}
},
...
]
}
}
}
这里的结果表示按照jcx字段进行分组聚合的结果,每个分组的名称为key,对应的文档个数为doc_count,统计出去重后的sjid个数为distinct_sjid.value。
原文地址: https://www.cveoy.top/t/topic/bH2V 著作权归作者所有。请勿转载和采集!