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

如何在Kibana中基于相同Idform合并字段?ELK项目技术咨询

在Kibana中合并同Idform的Elasticsearch记录

针对你需要合并两条Idform=2记录的需求,提供两种实用方案:

方案一:用Transform生成合并后的永久索引

适合需要将合并结果持久化存储的场景:

  1. 进入Kibana的 Stack Management > Transform > Create transform
  2. 选择包含目标记录的源索引(或索引模式),完成源数据配置
  3. 选择Pivot转换类型,设置分组字段为Idform(按该字段聚合合并)
  4. 添加聚合规则:
    • 对essaye、Nom、Prénom、Nomform、Université这些字段,选择Terms聚合(因同Idform下每个字段值唯一,也可选用Max/Min聚合),保留原字段名
    • 固定值字段如YES(对应essaye字段的值)也通过Terms聚合保留
  5. 指定目标索引名称(如merged-forms),配置刷新频率等参数后启动Transform
  6. 完成后目标索引中会生成单条Idform=2的记录,包含所有需要的字段

方案二:用Runtime Fields实现临时合并展示

无需修改原始数据,仅在Kibana中展示合并结果:

  1. 进入 Stack Management > Index Patterns,选中对应索引模式
  2. 点击 Add field > Runtime field,创建新字段(如merged_content)
  3. 选择Painless脚本语言,编写合并脚本(需匹配实际字段名):
    def parts = [];
    // 拼接固定字段
    parts.add("essaye " + doc['essaye.keyword'].value);
    parts.add("Idform " + doc['Idform'].value);
    // 按需拼接存在的字段
    if (doc.containsKey('Nom')) parts.add("Nom " + doc['Nom.keyword'].value);
    if (doc.containsKey('Prénom')) parts.add("Prénom " + doc['Prénom.keyword'].value);
    if (doc.containsKey('Nomform')) parts.add("Nomform " + doc['Nomform.keyword'].value);
    if (doc.containsKey('Université')) parts.add("Université " + doc['Université.keyword'].value);
    return String.join(' ', parts);
    
  4. 保存字段后,在Discover或可视化中选择该字段,即可查看合并后的文本

额外说明

如果原始记录是未结构化的整段文本(而非拆分好的字段),需先通过Ingest Pipeline用Grok模式解析为结构化字段。例如针对你的记录格式,Grok模式可写为:

%{WORD:essaye} %{WORD:confirmation} Idform %{NUMBER:Idform:int} (Nom %{DATA:Nom})? (Prénom %{DATA:Prénom})? (Nomform %{DATA:Nomform})? (Université %{DATA:Université})? _id %{DATA:_id} _index %{DATA:_index} _score %{DATA:_score}

解析后再执行上述合并操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:12:54