Come indicizzare un file pdf in Elasticsearch 5.0.0 con il plug-in di ingest-attachment?

Sono nuovo di Elasticsearch e leggo qui https://www.elastic.co/guide/en/elasticsearch/plugins/master/mapper-attachments.html che il plug-in Mapper-attachments è deprecato in elasticsearch 5.0.0.

Ora provo ad indicizzare un file pdf con il nuovo plugin di ingest-attachment e caricare l’allegato.

Quello che ho provato finora è

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

ma ottengo il seguente errore:

 {"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} 

Mi aspetto che il file pdf venga indicizzato e caricato. Che cosa sto facendo di sbagliato?

Ho anche testato Elasticsearch 2.3.3 ma il plugin mapper-attachments non è valido per questa versione e non voglio utilizzare alcuna versione precedente di Elasticsearch.

Devi assicurarti di aver creato la tua pipeline di ingest con:

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

Quindi puoi fare un PUT non POST al tuo indice usando la pipeline che hai creato.

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

Nel tuo esempio, dovrebbe essere qualcosa del tipo:

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

Ricordando che il contenuto PDF deve essere codificato in base64.

Spero ti possa aiutare.

Modifica 1 Assicurati di leggere questi, mi ha aiutato molto:

Ingestione elastica

Plugin di Ingest

Presentazione di ingestione

Modifica 2

Inoltre, devi avere installato il plug -in di ingest-attachment .

 ./bin/elasticsearch-plugin install ingest-attachment 

Modifica 3

Per favore, prima di creare il tuo processore ingest (allegato), crea il tuo indice , mappalo con i campi che userai e assicurati di avere il campo dati nella tua mappa (stesso nome del “campo” nel tuo processore degli allegati), quindi ingerisci elaborerà e riempirà il campo dati con i tuoi contenuti in formato pdf.

Ho inserito l’opzione indexed_chars nel processore di ingest, con valore -1 , in modo da poter indicizzare file pdf di grandi dimensioni.

Modifica 4

La mapping dovrebbe essere qualcosa del genere:

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

In questo caso, utilizzo il filtro brasiliano , ma puoi rimuoverlo o utilizzarne uno tuo.