私はElasticsearchを初めて使用し、ここを読みます https://www.elastic.co/guide/en/elasticsearch/plugins/master/mapper-attachments.html mapper-attachmentsプラグインは廃止されましたelasticsearch 5.0.0で。
現在、新しい取り込みプラグインで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の古いバージョンを使用したくありません。
以下を使用してingestパイプラインを作成したことを確認する必要があります。
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エンコードする必要があることに注意してください。
それがあなたを助けることを願っています。
Edit 1これらを必ず読んでください、それは私を大いに助けてくれました:
Edit 2
また、ingest-attachmentプラグインがインストールされている必要があります。
./bin/elasticsearch-plugin install ingest-attachment
Edit 3
ingestプロセッサ(添付ファイル)を作成する前に、index、map使用するフィールドで、mapにdataフィールドがあることを確認してください(添付ファイルプロセッサの「フィールド」の同じ名前)、ingestはdataフィールドを処理し、pdfコンテンツでいっぱいにします。
indexed_charsオプションを-1値とともにインジェストプロセッサに挿入したので、大きなPDFファイルにインデックスを付けることができます。
Edit 4
マッピングは次のようになります。
PUT my_index
{
"mappings" : {
"my_type" : {
"properties" : {
"attachment.data" : {
"type": "text",
"analyzer" : "brazilian"
}
}
}
}
}
この場合、brazilianフィルターを使用しますが、それを削除するか、独自のフィルターを使用できます。