ElasticSearch 5.0.0摄取附件插件问题索引PDF

时间:2016-11-17 11:51:30

标签: pdf elasticsearch elasticsearch-plugin

请参阅this post

我的环境:

{   "name" : "node-0",
    "cluster_name" : "ES500-JBD-0",  
    "cluster_uuid" : "q_akJRkrSI-glTwT5vfH4A",  
  "version" : {
    "number" : "5.0.0",
    "build_hash" : "253032b",
    "build_date" : "2016-10-26T04:37:51.531Z",
    "build_snapshot" : false,
    "lucene_version" : "6.2.0"   },
  "tagline" : "You Know, for Search"
}

指数&管道创建(编辑3 ):

curl -XPUT 'vm01.jbdata.fr:9200/_ingest/pipeline/attachment' -d '{
  "description" : "Extract attachment information",
  "processors" : [
    {
      "attachment" : {
        "field" : "data",
        "indexed_chars" : -1
      }
    }
  ]
}'

使用法语创建地图(编辑4 ):

curl -XPUT 'vm01.jbdata.fr:9200/ged-idx-00' -d '{
  "mappings" : {
    "ged_type_0" : {
      "properties" : {
         "attachment.data" : {
            "type": "text",
            "analyzer" : "french"
            }
         }
      }
   }
}'

ES特定配置(编辑1 & 编辑2 ):

$ bin/elasticsearch-plugin list
ingest-attachment

来自config / elasticsearch.yml

plugin.mandatory: ingest-attachment

命令 S 索引PDF:

1 / A“原始”PDF。

curl -H 'Content-Type: application/pdf' -XPUT vm01.jbdata.fr:9200/ged-idx-00?pipeline=attachment -d @/tmp/zookeeperAdmin.pdf
  

{“错误”:{“root_cause”:[{“type”:“settings_exception”,“reason”:“无法从[%PDF-1.4%load加载设置]。 ..   0D33957F>]>> startxref76764 %% EOF;行:1,列:   2] “}},”状态“: 500 }

2 / A“B64ed”PDF。

aPath='/tmp/zookeeperAdmin.pdf'
aB64content=$(base64 $aPath | perl -pe 's/\n/\\n/g')
echo $aB64content > /tmp/zookeeperAdmin.pdf.b64
curl -XPUT "http://vm01.jbdata.fr:9200/ged-idx-00?pipeline=attachment" -d '{
    "file" : "content" : "'$aB64content'"
}'
  

{“错误”:{“root_cause”:...“原因”:“无法解析来源   创建   指数 “ ”caused_by“:{ ”类型“: ”json_parse_exception“, ”理由“:” 意外   character(':'(code 58)):期待逗号分隔Object   条目\ n在[来源:   org.elasticsearch.transport.netty4.ByteBufStreamInput@65a254b6;线:   2,栏目:25]“}},”状态“: 400 }

如何正确使用ingest-attachment插件吨索引PDF?

2 个答案:

答案 0 :(得分:1)

根据我的经验,该文件需要在Base64中进行编码,因此您的选项2应该是最佳选择。

关于你的最后一次尝试:

curl -XPUT "http://vm01.jbdata.fr:9200/ged-idx-00?pipeline=attachment" -d '{
    "file" : "content" : "'$aB64content'"
}'

提供的JSON格式错误("":" b":" c"),因此出错。

正如您在管道创建中指定的那样,您只需要一个数据字段,因此以下应该可以解决这个问题:

curl -XPUT "http://vm01.jbdata.fr:9200/ged-idx-00?pipeline=attachment" -d '{
    "data" : "'$aB64content'"
}'

答案 1 :(得分:0)

事实上,从PDF中正确提取文本非常困难,通常您必须提取内嵌图像或渲染整个页面并根据从页面提取的文本及其内容对其进行OCR (例如,您必须分析编码是否正确)。你根本无法调整Tika在解析过程中使用任何自定义逻辑,你也不能使用Ingest Attachment这样做。如果你的目标是高质量的PDF解析 - 摄取附件不是你想要的,你必须自己做。

阅读完整的故事:https://blog.ambar.cloud/ingest-attachment-plugin-for-elasticsearch-should-you-use-it/