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

Elasticsearch索引数据在Kibana中显示为Buffer类型如何解决

问题原因

你的索引操作核心问题出在两个地方:

  1. 传入ES的字段值类型错误:你代码里Value字段赋值的fieldData.fieldHTMLText是Node.js的Buffer二进制对象,不是字符串类型。Elasticsearch的JS客户端序列化时会直接把Buffer的结构(包含type: "Buffer"标识和字节数组data)转成JSON写入索引,不会自动帮你转成明文文本。
  2. 你查询的索引不匹配:你代码里指定写入的索引是project_documents_textfielddata,但贴出来的Kibana返回样例里_index字段是documenttextfile.files,两个索引完全不是同一个,你当前查到的是其他存储二进制文件的索引数据,不是你代码写入的目标数据。

你写的索引API调用本身的参数(id、routing、索引名传参)没有语法错误,不需要调整结构。

修复步骤
  • 先转码字段再写入
    在调用client.index前,先把Buffer类型的字段转成UTF-8字符串,修改Value字段赋值逻辑:
    await client.index({
      id: fieldId.toString(),
      index: 'project_documents_textfielddata',
      body: {
        FieldId: fieldId,
        DocumentId: documentId,
        // 把Buffer转成utf8明文字符串再传入
        Value: fieldData.fieldHTMLText.toString('utf8'),
      },
      routing: projectId.toString(),
    });
    
    写入前可以加一行校验确认类型:console.log(Buffer.isBuffer(fieldData.fieldHTMLText)),如果返回true就确认是Buffer类型问题,转码后再写入即可。
  • 切换Kibana查询的目标索引
    进入Kibana Discover页后,左上角索引选择器切换到你写入的project_documents_textfielddata对应的索引模式,不要查documenttextfile.files这个存二进制文件的索引。
  • 清理错误历史数据
    之前误写入Buffer结构的旧文档,可以通过删除索引重导、或者update_by_query接口批量修复,不然旧数据永远是二进制Buffer结构,无法直接查看明文。
Kibana查看原始明文数据的方法

修复写入逻辑、选对索引之后,直接在Discover页展开文档的_source字段,就能看到和MongoDB Compass一致的原始存储明文结构,不需要额外配置格式化规则,字符串字段会直接展示明文内容,不会再出现字节数组形式的Buffer结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:09:28