如何通过FSCrawler将自定义字段添加至PDF元数据并完成索引?
实现FSCrawler自定义PDF元数据与文档联合索引的步骤
你已经在配置文件中定义了自定义元数据字段,接下来需要完成元数据来源映射和重新索引两个核心步骤,具体操作如下:
1. 完善配置文件的元数据映射
FSCrawler需要明确自定义字段的数据源(是PDF文档自带的自定义属性,还是文件系统的扩展属性),你需要在配置的metadata块中添加value字段指定来源:
情况1:提取PDF文档内置的自定义元数据
如果你的PDF本身包含custom_field1、custom_field2这类自定义属性(可通过PDF阅读器的属性面板查看),修改配置如下:
metadata: custom_field1: type: text value: "${pdf.custom_field1}" # 映射PDF内置的custom_field1属性 custom_field2: type: keyword value: "${pdf.custom_field2}" # 映射PDF内置的custom_field2属性
情况2:提取文件系统的扩展属性(以Linux为例)
如果元数据存储在文件的扩展属性中(比如Linux的user.custom_field1),配置改为:
metadata: custom_field1: type: text value: "${file.attributes.user.custom_field1}" # 映射文件扩展属性 custom_field2: type: keyword value: "${file.attributes.user.custom_field2}"
注意:YAML配置对缩进严格,确保每个层级的缩进一致(一般用2个空格)。
2. 重新执行索引命令
使用你原有的命令重新启动爬取,--restart参数会清空旧索引并重新生成包含自定义字段的新索引:
/usr/bin/fscrawler --config_dir /home/user1/conf test_index --restart --loop 1
3. 验证索引结果
通过Elasticsearch的查询接口检查文档是否包含自定义字段:
curl -X GET "http://localhost:9200/test_index/_search?q=*&size=1"
在返回的JSON结果中,查看_source节点下是否存在custom_field1和custom_field2字段。
额外注意事项
- 确保PDF文档确实包含你要提取的自定义元数据,否则字段值会为
null - 若需手动给PDF添加自定义元数据,可使用
pdftk等工具批量处理 - 建议使用FSCrawler的最新稳定版本,避免旧版本的兼容性问题
内容的提问来源于stack exchange,提问作者Manoj Agarwal
相关产品推荐
相关产品推荐

