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

如何使用Elasticsearch Ruby消费附件管道文档及API调用求助

没问题,我来帮你一步步解决这两个问题~

先解决你提到的管道附加文档的请求问题

你当前的PUT请求有两处需要调整:

  1. Elasticsearch 7.0及以上版本已经废弃了文档类型(my_type),所以URL里要移除这部分;
  2. 必须提前创建好attachment管道,否则请求会直接失败。

第一步:创建attachment管道

先执行这个命令创建管道(可以用Kibana Dev Tools或者curl):

PUT _ingest/pipeline/attachment
{
  "description": "提取附件内容信息",
  "processors": [
    {
      "attachment": {
        "field": "data", # 指定要处理的字段(你的base64数据存在这个字段)
        "target_field": "attachment" # 处理后的结果存到这个字段
      }
    }
  ]
}

第二步:修正后的索引请求

现在用正确的格式发送PUT请求:

PUT my_index/_doc/my_id?pipeline=attachment
{
  "data": "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0="
}

你提供的base64内容是一个简单的文本文件,处理完成后,文档的attachment字段会包含解析后的文本内容、文件类型等信息。


用Elasticsearch Ruby客户端消费(索引+查询)文档

下面是完整的Ruby代码示例,涵盖从初始化到查询解析后内容的全流程:

1. 安装Ruby客户端

先确保你安装了官方的elasticsearch gem:

gem install elasticsearch

2. 初始化ES客户端

require 'elasticsearch'

# 根据你的ES集群配置调整参数
client = Elasticsearch::Client.new(
  hosts: ['http://localhost:9200'],
  retry_on_failure: 3,
  request_timeout: 120
)

3. (可选)用Ruby创建attachment管道

如果还没通过curl/Kibana创建管道,也可以用Ruby代码完成:

client.ingest.put_pipeline(
  id: 'attachment',
  body: {
    description: 'Extract attachment content',
    processors: [
      {
        attachment: {
          field: 'data',
          target_field: 'attachment'
        }
      }
    ]
  }
)

4. 索引文档并指定管道

把你的base64数据传入,同时指定使用attachment管道处理:

# 替换成你的base64编码附件内容
base64_attachment = "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0="

# 索引文档
client.index(
  index: 'my_index',
  id: 'my_id',
  pipeline: 'attachment', # 关键:指定使用attachment管道
  body: { data: base64_attachment }
)

5. 查询并消费解析后的内容

现在可以查询文档,获取管道处理后的附件信息:

# 获取文档详情
document = client.get(index: 'my_index', id: 'my_id')

# 提取解析后的内容
attachment_content = document['_source']['attachment']['content']
content_type = document['_source']['attachment']['content_type']

puts "解析后的附件文本:\n#{attachment_content}"
puts "附件类型:#{content_type}"

额外注意事项

  • 确保你的Elasticsearch已经安装了ingest-attachment插件,否则attachment处理器会失效。安装命令(根据你的ES路径调整):
    bin/elasticsearch-plugin install ingest-attachment
    
  • 如果你的ES版本低于7.0,那需要保留文档类型字段,请求格式为PUT my_index/my_type/my_id?pipeline=attachment,但还是建议升级到高版本,因为文档类型已经被官方废弃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:11:39