前提:pdf的内容是文字形式而不是图片形式!

一.方法#

       Elasticsearch实现pdf的全文检索,原理是将pdf转换为Base64,然后提取pdf的文字内容然后将其存储起来.

       Elasticsearch已有相关Api提供,也给出了例子.链接如下:

       7.0 java api 例子

       我们来解读以下

 
复制代码
//定制一个管道,用于将Base64转换为文字形式 PUT _ingest/pipeline/attachment {   "description" : "Extract attachment information",  //管道的描述  "processors" : [     {       "attachment" : {         "field" : "data"        //配置在哪个字段获取Base64数据,然后进行转换      }     }   ] }   //后面我们索引文档的时候 ?pipeline=attachment,就要指定这个参数,表明索引一个文档的时候要使用这个管道  PUT my_index/_doc/my_id?pipeline=attachment {   "data": "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0=" //base64数据}
复制代码
 

那么获取那篇刚刚索引的数据,返回的json就为

复制代码
"attachment": {       "content_type": "application/rtf",       "language": "ro",       "content": "Lorem ipsum dolor sit amet",       "content_length": 28     }
复制代码

 

其中content就是转换后的文字

注意,上述操作的前提之下是装了ingest-attachment插件,可以再es的根目录下直接运行下面的命令进行安装

./bin/elasticsearch-plugin install ingest-attachment