查询 elasticsearch——获取每个节点、每个主机的文档计数

Querying elasticsearch -- get document count per node, per host

好的,架构是我们在每个连接到我们的 ELK 堆栈的主机上有多个节点(3 到 5 个)运行。

我正在尝试编写一个查询,基本上是要说明每个主机和每个节点上出现了多少文档。

现在节点是它自己的领域...

我在 kibana 中查询的方式类似于

主机:“1-18”和节点:03

将拉起该主机...我正在尝试为每个主机和主机上的每个节点确定过去 24 小时内存在多少文档,并且查询并没有产生很多感觉。当我尝试使用 2 个字段时,它不起作用。当我尝试使用 2 个也不起作用的范围时。

我使用以下方法获取每个主机的文档计数:

{"size": 0,"aggs" : {"langs" : {"terms" : { "field" : "host" }}}}

添加每个节点的聚合有那么难吗?

您只需在 host 下添加一个子聚合,如下所示:

{
  "size": 0,
  "aggs": {
    "hosts": {
      "terms": {
        "field": "host"
      },
      "aggs": {
        "nodes": {
          "terms": {
            "field": "node"
          }
        }
      }
    }
  }
}

在 Kibana 中,您可以通过进入“可视化”选项卡并选择一个饼图来直观地执行此操作。然后在 host 字段上使用 terms 聚合,然后单击“+ 添加子桶”并在 node 字段上使用另一个 terms 聚合。