【发布时间】:2022-11-30 02:47:43
【问题描述】:
我正在使用 Kibana 查看包含以下对象的 Opensearch 索引:
timestamp:"November 3rd 2022, 23:50:51.253" client_id:"61c9aebdd01d" event:"login"
timestamp:"November 3rd 2022, 23:51:11.553" client_id:"61c9aebdd01d" event:"error"
timestamp:"November 3rd 2022, 23:52:19.982" client_id:"287a5ef458db" event:"login"
timestamp:"November 3rd 2022, 23:59:35.840" client_id:"61c9aebdd01d" event:"login"
我想用事件“登录”计算唯一的 client_ids;因此,使用上面的数据,计数将为 2。
我能够使用 AWS 的 Kibana 界面和查询 DSL 来计算匹配“登录”的事件:
{
"query": {
"match": {
"event": "login"
}
}
}
...工作正常,并产生计数 3。
但是当我尝试根据各种文档构建聚合时,例如:
{
"size": 0,
"aggs": {
"client_count": {
"cardinality": {
"field": "client_id"
}
}
}
}
...我得到一个SearchError: Internal Server Error。
我已经尝试过各种变体。例如,这可以正常工作:
{
"size": 0,
"query": {
"match": {
"event": "login"
}
},
"aggs": {
"client_count": {
"cardinality": {
"field": "client_id",
"size": 0
}
}
}
}
...但是,它似乎并没有实际报告唯一 client_ids 的计数,它只是产生与上面第一个查询完全相同的结果(匹配所有“登录”事件)。
聚合类型“cardinality”、“terms”和“global”似乎都会产生相同的错误。
知道我应该使用什么语法吗?
P.S.:我查看了大约 30 个其他 Elasticsearch 查询问题,但似乎没有一个能回答这个问题
P.P.S:我不能使用类似的语法
GET /my_index_here/_search
{
...
【问题讨论】:
标签: elasticsearch kibana elasticsearch-dsl opensearch