【问题标题】:Build a Kibana Histogram with buckets dynamically created by ElasticSearch terms aggregation使用 ElasticSearch 术语聚合动态创建的存储桶构建 Kibana 直方图
【发布时间】:2026-02-20 01:35:01
【问题描述】:

我希望能够结合 Kibana Terms Graph 的功能(能够根据来自特定属性的值的唯一性创建存储桶)和 直方图(根据查询将数据分成桶,然后根据时间说明日期)。

总的来说,我想创建一个直方图,但我只想根据一个查询的结果创建直方图,而不是像在Kibana demo app 中那样进行多个查询。相反,我希望根据我的特定字段的唯一值动态创建每个存储桶。例如,考虑我的查询返回的以下数据:

{"myValueType": "New York"}
{"myValueType": "New York"}
{"myValueType": "New York"}
{"myValueType": "San Francisco"}
{"myValueType": "San Francisco"}

还假设每条记录都有一个timestamp 字段,用于按日期分隔直方图数据。对于那个特定日期,我希望将数据作为计数 3 传送到 New York 存储桶中,并将 2 计数传送到 San Francisco 存储桶中。但是,我只能为我的一个链接查询显示 5 个计数。当我配置直方图时,我可以指定一个字段用于我的时间戳,但不能从中创建存储桶。我可以发送一个字段来计算总/最小值/最大值/平均值,但这个字段必须是数字,所以这也不是解决方案。

如果我要使用术语图来创建饼图或条形图,我确实能够根据我指定字段的唯一值(在本例中为“myValueType”)将我的数据分成存储桶,但这将汇总所有时间的数据,而不是按时间戳拆分数据。虽然这是很好的信息,但并不理想,因为我无法检测数据中的趋势。

我正在寻找可以执行以下操作之一的解决方案:

  • 让我在 Kibana 仪表板中动态创建查询以在直方图中创建“桶”
  • 请允许我运行ElasticSearch Terms Aggregation最好根据“myValueType”将我的数据拆分到存储桶中,并将这些结果整合到我的直方图中
  • 自定义仪表板的 JSON,但这在我看来是不可能的
  • 创建我自己的自定义面板,但这是不可取的
  • 在 Kibana 中链接 Kibana“TopN”查询。实际上,这已被证明是解决我的问题的一种方法,因为 TopN 查询从指定的 fieldName 为每个唯一值/术语动态创建一个查询。但是,问题是我只能将一种颜色链接到此 TopN 查询,并且每个唯一术语都将放置在使用不同颜色阴影的存储桶中。理想情况下,我的直方图中的每个桶都有与之相关的完全不同的颜色。想象一下,随着存储桶数量的增加,区分唯一术语将变得多么困难。
  • 如果一切都失败了,我会从我的搜索字段中对每个唯一值进行一次查询。这将允许我为每个存储桶使用一种唯一颜色,但随着“myValueType”字段中唯一术语的数量发生变化,我需要不断从 Kibana 添加/删除查询,这可能会变得非常混乱。

我确定我在这里缺少一些东西。请帮帮我。非常感谢。

一个高度相关的 SOF 问题:Is it Possible to Use Histogram Facet or Its Curl Response in Kibana

【问题讨论】:

  • 请允许我运行 ElasticSearch 术语聚合... - 现在可以在 Kibana 4 中使用。在 this answer 中,您有一个示例说明如何操作

标签: lucene elasticsearch kibana


【解决方案1】:

可能有点晚,但在最新的 BETA 版本中实际上是可能的。

kibana 4 beta 3 installation download

【讨论】:

    【解决方案2】:

    这将是一个很棒的功能。看起来它会在 Kibana4 中得到支持,但似乎没有比这更多的信息了。

    供参考:https://github.com/elasticsearch/kibana/issues/1249

    【讨论】:

    • 我已经放弃了希望:(