是否可以使用Kibana查询字段的唯一/唯一计数?我将弹性搜索用作Kibana的后端。
如果是这样,查询的语法是什么?这是我要查询的指向Kibana界面的链接:http ://demo.kibana.org/#/dashboard
我正在用logstash解析nginx访问日志,并将数据存储到弹性搜索中。然后,我使用Kibana来运行查询并使图表中的数据可视化。具体来说,我想知道使用Kibana在特定时间范围内唯一IP地址的计数。
是否可以使用Kibana查询字段的唯一/唯一计数?我将弹性搜索用作Kibana的后端。
如果是这样,查询的语法是什么?这是我要查询的指向Kibana界面的链接:http ://demo.kibana.org/#/dashboard
我正在用logstash解析nginx访问日志,并将数据存储到弹性搜索中。然后,我使用Kibana来运行查询并使图表中的数据可视化。具体来说,我想知道使用Kibana在特定时间范围内唯一IP地址的计数。
Answers:
对于Kibana 4,请转到此答案
使用术语面板很容易做到这一点:
如果要选择日志中不同IP的计数,则应在字段中指定,clientip
并输入足够大的长度(否则,它将在同一组中加入不同的IP)并以样式指定表。添加面板后,您将获得一个包含IP的表格以及该IP的数量:
请注意,您使用的是“基数”量度,它并不总是保证确切的唯一计数。:-)
基数度量是一种近似算法。它基于HyperLogLog ++(HLL)算法。HLL通过对输入进行散列并使用散列中的位对基数进行概率估计来工作。
根据数据量,我可以通过Elastic中的唯一计数获得300k数据集中缺少的700多个条目的差异,否则它们是真正唯一的。
在此处阅读更多信息:https : //www.elastic.co/guide/zh-CN/elasticsearch/guide/current/cardinality.html
在“ clientip”上创建“ topN”查询,然后在“ clientip”上创建带有计数的直方图,并将“ topN”查询设置为源。然后,您将看到每次不同IP的计数。
通过使用构面可以实现字段值的唯一计数。有关完整内容,请参见ES文档,但要点是您将创建一个查询,然后要求ES在结果上准备方面以对字段中找到的值进行计数。您可以自定义使用的字段,甚至描述如何希望返回值。构面类型的最基本类型只是按术语分组,就像上面的IP地址一样。您可能会变得非常复杂,甚至需要在您的方面进行查询!
{
"query": {
"match_all": {}
},
"facets": {
"terms": {
"field": "ip_address"
}
}
}