我是 Kibana 和 Elasticsearch 的新手。
我有一个名为 serviceprovidername
的字段名称。我想找出该字段中存在多少个不同的服务提供商名称。我怎样才能做到这一点?
这是我到目前为止尝试过的。
search query
GET _search{“ages”: {“distinct_serviceprovidername”:{“terms”:{“field” :”serviceprovidername”}}}}
如果我的原始数据是这样的
Serviceprovidername
_______________________
X
Y
X
Y
Y
Z
我排除的结果是:
Serviceprovidername
_______________________
X
Y
Z
请帮忙
最佳答案
如果您可以在 Kibana > DevTools > Console 上运行以下“术语聚合”,它应该可以工作:
GET /_search
{
"size": 0,
"aggs" : {
"distinct_serviceprovidername" : {
"terms" : { "field" : "serviceprovidername" }
}
}
}
查询返回一个多桶值源,包括 serviceprovidername
字段的不同值,如下所示:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 15601,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"distinct_serviceprovidername" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 67,
"buckets" : [
{
"key" : "X",
"doc_count" : 301
},
{
"key" : "Y",
"doc_count" : 207
},
{
"key" : "Z",
"doc_count" : 175
}
]
}
}
}
编辑:"size": 0
在需要聚合但不需要搜索命中时使用。在这种情况下,获取搜索命中没有任何意义,因此我忽略了它,通过仅返回聚合结果来提高请求效率。
关于elasticsearch - Kibana 中的 SQL “Distinct” 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857153/