web-dev-qa-db-ja.com

取り込み接続プラグインを使用してElasticsearch 5.0.0でPDFファイルのインデックスを作成するにはどうすればよいですか?

私は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の古いバージョンを使用したくありません。

14
7twenty7

以下を使用して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プロセッサ(添付ファイル)を作成する前に、indexmap使用するフィールドで、mapdataフィールドがあることを確認してください(添付ファイルプロセッサの「フィールド」の同じ名前)、ingestはdataフィールドを処理し、pdfコンテンツでいっぱいにします。

indexed_charsオプションを-1値とともにインジェストプロセッサに挿入したので、大きなPDFファイルにインデックスを付けることができます。

Edit 4

マッピングは次のようになります。

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

この場合、brazilianフィルターを使用しますが、それを削除するか、独自のフィルターを使用できます。

17
Evis