如何通过Kibana为Elasticsearch 7.14配置PDF摄入索引管道
Elasticsearch 7.14 基于Kibana的PDF摄入与索引操作指引
前置校验:确认ingest-attachment插件生效
打开Kibana左侧菜单的「Dev Tools」,在Console中执行以下请求,确认所有涉及Ingest能力的节点都已安装插件:
GET _cat/plugins?v
返回结果中包含ingest-attachment且版本为7.14即为正常。
步骤1:创建PDF解析专用Ingest管道
你需要使用attachment处理器完成PDF内容提取,在Dev Tools中执行以下请求创建管道:
PUT _ingest/pipeline/pdf-extraction-pipeline { "description": "提取PDF文件文本与元数据的管道", "processors": [ { "attachment": { "field": "pdf_base64", "target_field": "pdf_info", "remove_binary": true, "indexed_chars": -1 } } ] }
参数说明:
field:存储PDF Base64编码的源字段名,可根据自己的需求修改target_field:解析后的PDF内容、元数据存储的目标字段remove_binary:解析完成后自动删除原始Base64内容,节省存储空间indexed_chars:设置为-1表示解析PDF全部内容,默认值为100000,超出长度的内容会被截断
步骤2:创建存储PDF解析结果的索引
建议提前定义索引映射,避免自动映射导致的字段类型不符合预期:
PUT pdf-doc-index { "mappings": { "properties": { "pdf_info": { "properties": { "content": { "type": "text", "analyzer": "ik_max_word" }, "title": {"type": "keyword"}, "author": {"type": "keyword"}, "date": {"type": "date"} } }, "upload_time": {"type": "date"}, "file_name": {"type": "keyword"} } } }
如果没有安装IK分词器或者不需要中文分词,可直接移除analyzer配置,使用默认的standard分词器即可
步骤3:测试管道解析能力
可以先通过管道模拟接口验证解析效果,需要提前准备一小段测试PDF的Base64编码:
POST _ingest/pipeline/pdf-extraction-pipeline/_simulate { "docs": [ { "_source": { "pdf_base64": "这里替换为你的测试PDF Base64编码字符串", "file_name": "测试文件.pdf", "upload_time": "2024-01-01T12:00:00Z" } } ] }
返回结果中pdf_info.content字段出现正常提取的PDF文本,即为管道配置正常。
步骤4:正式摄入PDF文件
必须提前将PDF文件转换为标准Base64编码字符串,不可直接上传二进制文件
在Dev Tools中执行以下请求即可完成单文件摄入,自动触发管道解析:
POST pdf-doc-index/_doc?pipeline=pdf-extraction-pipeline { "pdf_base64": "替换为你需要摄入的PDF的Base64编码", "file_name": "产品说明.pdf", "upload_time": "2024-05-20T14:30:00Z" }
如果需要批量摄入,可在Bulk请求的参数中统一指定pipeline=pdf-extraction-pipeline即可。
常见问题排查
- 解析结果乱码/无内容:确认你的PDF是可提取文本的电子文档,扫描版PDF需要额外做OCR处理,ingest-attachment插件不支持图像内容识别;同时确认Base64编码无多余换行、特殊字符
- 管道不生效:确认请求时已添加
pipeline参数指定我们创建的pdf-extraction-pipeline;确认所有Ingest节点都已安装ingest-attachment插件并重启生效
内容的提问来源于stack exchange,提问作者Pragyan Prakash Parida
相关产品推荐
相关产品推荐

