当前位置: 首页 > 面试题库 >

如何使用摄录附件插件在Elasticsearch 5.0.0中索引pdf文件?

胡博艺
2023-03-14
问题内容

我是Elasticsearch的新手,我在这里阅读https://www.elastic.co/guide/zh-
cn/elasticsearch/plugins/master/mapper-
attachments.html

,在Elasticsearch 5.0.0中已弃用了mapper-attachments插件。

我现在尝试使用新的摄取附件插件为pdf文件编制索引并上传附件。

到目前为止,我尝试过的是

curl -H 'Content-Type: application/pdf' -XPOST localhost:9200/test/1 -d @/cygdrive/c/test/test.pdf

但出现以下错误:

{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"failed to parse"}],"type":"mapper_parsing_exception","reason":"failed to parse","caused_by":{"type":"not_x_content_exception","reason":"Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes"}},"status":400}

我希望pdf文件将被索引并上传。我究竟做错了什么?

我还测试了Elasticsearch 2.3.3,但是mapper-
attachments插件对此版本无效,并且我不想使用任何旧版本的Elasticsearch。


问题答案:

您需要确保使用以下方法创建了 摄取 管道:

PUT _ingest/pipeline/attachment
{
  "description" : "Extract attachment information",
  "processors" : [
    {
      "attachment" : {
        "field" : "data",
        "indexed_chars" : -1
      }
    }
  ]
}

然后,你可以做一个 PUT 不是 POST 使用你所创建的管道索引。

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

在您的示例中,应为:

curl -H 'Content-Type: application/pdf' -XPUT localhost:9200/test/1?pipeline=attachment -d @/cygdrive/c/test/test.pdf

请记住,PDF内容必须是base64编码的。

希望对您有帮助。

编辑1 请确保阅读这些内容,这对我有很大帮助:

弹性摄取

摄取插件

摄取演示

编辑2

另外,您必须安装了 摄取附件 插件。

./bin/elasticsearch-plugin install ingest-attachment

编辑3

请在创建 摄取处理器 (附件)之前,创建 索引 ,使用要使用的字段的 地图 ,并确保您的 地图中数据*
字段(附件处理器中“字段”的名称相同),因此请摄取将使用pdf内容处理并填充您的 数据 字段。 __
*

我在摄取处理器中插入了 indexed_chars 选项,其值为 -1 ,因此可以为大型pdf文件编制索引。

编辑4

映射应该是这样的:

PUT my_index
{ 
    "mappings" : { 
        "my_type" : { 
            "properties" : { 
                "attachment.data" : { 
                    "type": "text", 
                    "analyzer" : "brazilian" 
                } 
            } 
        } 
    } 
}

在这种情况下,我使用 巴西 过滤器,但是您可以删除它或使用自己的过滤器。



 类似资料:
  • 我是Elasticsearch的新手,我在https://www.elastic.co/guide/en/Elasticsearch/plugins/master/mapper-attachments.html读到emapper-attachments插件在Elasticsearch 5.0.0中是不推荐的。 我希望pdf文件将被索引和上传。我做错了什么? 我也测试了Elasticsearch 2

  • 我们有一个客户正在使用谷歌搜索设备(GSA)搜索数千个PDF文件。PDF文件位于子文件夹中组织的文件共享上。它定期发现新文件并将其添加到数据库中。 GSA还不够好,所以现在他们需要替代品。例如,他们的GSA无法在PDF中正确搜索垂直文本。我们已经研究了Apache Lucene和Solr以及Tika和ExtractingRequestHandler。 我已经启动并运行了Solr示例,并添加了一个使

  • 问题内容: 难以通过 Tire* 宝石索引 Elasticsearch 的附件类型。无法正确设置附件。 * 我已经采用了来自Tyre gem的ActiveModelIntegration示例,并添加了一个字段,以引用我希望与该记录建立索引的本地文件系统上PDF的名称。 FWIW-PDF似乎已添加到索引: 但是附件类型仍然是应该的 我尝试重建索引,但是类型仍然是字符串。有人看到我在搞砸吗? 日志 (

  • 下面的脚本可以将pdf文件作为附件发送到Gmail和Outlook,但不会显示在Yahoo mail中。我的代码怎么了? 其次,当邮件被发送时,除了pdf附件本身,它不会携带邮件正文。任何关于如何添加带有pdf附件的邮件正文的建议都将不胜感激。

  • 我现在试图修改一个只有文本内容的PDF文件。当我使用 谢谢

  • 我想在另一个缩放的PDF页面中插入一个PDF页面。我想用iTextSharp做这个。 我有一个矢量绘图,可以导出为单页PDF文件。我想将此文件添加到其他PDF文档的页面中,就像我将图像添加到PDF文档一样。 这可能吗? 这样做的目的是在不损失质量的情况下保留放大的能力。 使用PDF矢量很难再现矢量绘图,因为它是一个极其复杂的绘图。 导出矢量绘图为高分辨率图像不是一个选项,因为我不得不在一个单独的P