您需要确保使用以下方法创建了 摄取 管道:
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" } } } } }在这种情况下,我使用 巴西 过滤器,但是您可以删除它或使用自己的过滤器。



