73

是否可以使用 Kibana 查询字段的不同/唯一计数?我使用弹性搜索作为 Kibana 的后端。

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

我正在使用 logstash 解析 nginx 访问日志并将数据存储到弹性搜索中。然后,我使用 Kibana 运行查询并在图表中可视化我的数据。具体来说,我想知道使用 Kibana 在特定时间范围内唯一 IP 地址的计数。

4

7 回答 7

49

对于 Kibana 4,请转到此答案

使用术语面板很容易做到这一点:

向 Kibana 添加术语面板

如果您想选择日志中不同 IP 的数量,您应该在字段中指定clientip,您应该在长度中输入足够大的数字(否则它将加入同一组下的不同 IP)并在样式中指定桌子。添加面板后,您将有一个带有 IP 的表,以及该 IP 的计数:

带有 IP 和计数的表

于 2014-02-17T18:38:40.527 回答
47

现在 Kibana 4 允许您使用聚合。除了像 Kibana 3 的这个答案中解释的那样构建一个面板之外,现在我们可以看到不同时期的唯一 IP 的数量,这就是(IMO)OP 首先想要的。

要构建这样的仪表板,您应该转到可视化 -> 选择您的索引 -> 选择垂直条形图,然后在可视化面板中:

  • 在 Y 轴中,我们想要 IP 的唯一计数(选择存储 IP 的字段),在 X 轴中,我们想要带有时间字段的日期直方图。

构建可视化

  • 按下Apply按钮后,我们应该有一个图表,显示按时分发的 IP 的唯一计数。我们可以更改 X 轴上的时间间隔,以查看每小时/每天的唯一 IP...

最终情节

只要考虑到唯一计数是近似的。有关更多信息,请查看此答案

于 2014-10-23T17:59:28.143 回答
8

请注意,您正在使用“基数”指标的唯一计数,这并不总是能保证准确的唯一计数。:-)

基数度量是一种近似算法。它基于 HyperLogLog++ (HLL) 算法。HLL 通过散列您的输入并使用散列中的位对基数进行概率估计来工作。

根据数据量,我可以通过 Elastic 中的 Unique Count 获得 300k 数据集中缺失的 700 多个条目的差异,这些条目在其他方面确实是独一无二的。

在此处阅读更多信息:https ://www.elastic.co/guide/en/elasticsearch/guide/current/cardinality.html

于 2015-09-25T03:44:23.440 回答
6

在“clientip”上创建“topN”查询,然后在“clientip”上创建带有计数的直方图,并将“topN”查询设置为源。然后您将看到每次不同 ip 的计数。

于 2014-05-13T06:14:08.667 回答
3

字段值的唯一计数是通过使用构面来实现的。有关完整的故事,请参阅ES 文档,但要点是您将创建一个查询,然后要求 ES 在结果上准备构面,以计算字段中找到的值。您可以自定义使用的字段,甚至描述您希望如何返回值。最基本的方面类型只是按术语分组,就像上面的 IP 地址一样。您可以使用这些变得非常复杂,甚至需要在您的方面进行查询!

{
    "query": {
        "match_all": {}
    },
    "facets": {
        "terms": {
            "field": "ip_address"
        }
    }
}
于 2013-10-01T04:13:14.073 回答
1

使用 Aggs,您可以轻松做到这一点。现在写下查询。

GET index/_search
{
  "size":0,
  "aggs": {
    "source": {
      "terms": {
        "field": "field",
        "size": 100000
      }
    }
  }
 }

这将返回field带有文档计数的不同值。

于 2018-11-30T06:27:16.060 回答
0

对于Kibana 7.xUnique Count在大多数可视化中都可用。

例如,在镜头中:

在此处输入图像描述

在基于聚合的可视化中:

在此处输入图像描述

甚至在TSVB中(支持普通字段以及运行时字段,不支持脚本字段):

在此处输入图像描述

于 2021-09-23T12:41:54.483 回答