如何使用Kibana +弹性search检索字段的唯一计数

是否有可能使用Kibana查询字段的唯一/唯一计数? 我使用弹性search作为我的后端Kibana。

如果是这样,查询的语法是什么? 下面是一个链接到Kibana界面我想使我的查询: http ://demo.kibana.org/#/dashboard

我正在用logstashparsingnginx访问日志,并将数据存储到弹性search中。 然后,我使用Kibana运行查询,并在图表中可视化我的数据。 具体来说,我想知道使用Kibana的特定时间段的唯一IP地址的数量。

对于Kibana 4去这个答案

使用术语面板很容易:

将条款面板添加到Kibana

如果要select日志中不同IP的计数,则应在clientip字段中指定一个足够长的数字(否则它将在同一组下join不同的IP),并在样式表。 在添加面板后,您将拥有一个IP表,该IP的数量:

带有IP和计数的表

现在Kibana 4允许您使用聚合。 除了build立像Kibana 3 这个答案中解释的那样的小组之外,现在我们可以看到不同时期独特IP的数量,这就是(IMO)OP想要的。

要构build这样的仪表板,你应该去Visualize – >select你的索引 – >select一个垂直条形图,然后在可视化面板中:

  • 在Y轴上,我们需要IP的唯一计数(select存储IP的字段),在X轴上,我们需要一个date直方图与我们的时间域。

建立一个可视化

  • 按下应用button后,我们应该有一个图表,显示按时分配的IP的唯一计数。 我们可以改变X轴上的时间间隔来查看每小时/每天的唯一IP地址…

最后的阴谋

只要考虑到独特的计数是近似的 。 欲了解更多信息,请检查此答案 。

请注意,使用“基数”度量的“唯一”计数并不总是能够保证确切的唯一计数。 🙂

基数度量是一个近似algorithm。 它基于HyperLogLog ++(HLL)algorithm。 HLL通过对input进行散列并使用散列中的位来对基数进行概率估计。

根据数据量的不同,我可以通过独特的弹性计数来获得300多个数据集中缺less的700多个条目的差异。

在这里阅读更多: https : //www.elastic.co/guide/en/elasticsearch/guide/current/cardinality.html

在“clientip”上创build“topN”查询,然后在“clientip”上计数直方图,并将“topN”查询设置为源。 然后你会看到每次计数不同的ips。

字段值的唯一计数是通过使用方面来实现的。 关于整个故事,请参阅ES文档 ,但要点是您将创build一个查询,然后要求ES准备结果中的各个方面,以计算字段中的值。 您可以自定义所用的字段,甚至可以描述您希望返回值的方式。 最基本的方面types就是根据术语分组,就像上面的IP地址一样。 你可以变得相当复杂,甚至在你的方面需要一个查询!

 { "query": { "match_all": {} }, "facets": { "terms": { "field": "ip_address" } } }