You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kibana 5.6.6中为range aggregation自定义标签

如何在Kibana 5.6.6中为Range Aggregation自定义标签

方法一:直接在Range聚合配置中设置自定义标签

这是最直观的实现方式,适合大多数常规场景:

  1. 打开Kibana的Visualize界面,创建或编辑一个可视化图表(比如柱状图、折线图都可以)。
  2. 在左侧的Metrics & Buckets面板里,添加一个Range类型的Bucket聚合,选择你要聚合的数值字段(比如响应时间、文本长度这类数值型字段)。
  3. 在Range聚合的配置区域,你会看到默认的区间设置(比如0 to 100这类)。对每个区间,你可以在对应的Key输入框里填写自定义标签,举个例子:
    • 第一个区间:from: 0,to: 10,Key填「极短」
    • 第二个区间:from: 10,to: 30,Key填「短」
    • 第三个区间:from: 30,to: 60,Key填「中等」
    • 第四个区间:from: 60,to: 100,Key填「长」
    • 第五个区间:from: 100,to: 200,Key填「过长」
    • 最后一个区间:只填from: 200(不需要to),Key填「极长」(代表大于等于200的范围)
  4. 点击Apply changes,图表就会自动用你设置的自定义标签展示每个区间的聚合结果了。

方法二:用Script字段实现更灵活的标签映射

如果你的区间逻辑比较复杂,或者需要在多个可视化中复用这个标签规则,可以先创建一个Script字段,再基于这个字段做Terms聚合:

  1. 打开Kibana的Management界面,进入Index Patterns,选中你的目标索引模式。
  2. 切换到Scripted fields标签,点击Add scripted field。
  3. 设置字段名称(比如duration_label),类型选择String。
  4. 在Script编辑器里,编写逻辑把数值映射到自定义标签,示例代码(以响应时间response_time字段为例):
if (doc['response_time'].value < 10) {
  return '极短';
} else if (doc['response_time'].value < 30) {
  return '短';
} else if (doc['response_time'].value < 60) {
  return '中等';
} else if (doc['response_time'].value < 100) {
  return '长';
} else if (doc['response_time'].value < 200) {
  return '过长';
} else {
  return '极长';
}
  1. 保存这个Script字段后,回到Visualize界面,创建一个Terms聚合,选择刚才创建的duration_label字段,就能直接展示带自定义标签的聚合结果了。

小提示

  • 方法一中的Range聚合,每个区间的Key要保持唯一,别重复设置相同标签哦。
  • 方法二用的是Painless脚本(Kibana 5.6默认支持),确保你的Elasticsearch集群开启了Painless脚本支持。
  • 如果要处理文本长度,把示例里的response_time换成doc['your_text_field.keyword'].value.length()就行。

内容的提问来源于stack exchange,提问作者Zaphod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:32:50