Sono nuovo di ElasticSearch. Ho seguito un'esercitazione di base sulla creazione di indici. Capisco il concetto di indicizzazione. Voglio che ElasticSearch cerchi all'interno di un file .PDF. Sulla base della mia comprensione della creazione di indici, sembra che ho bisogno di leggere il file .PDF ed estrarre tutte le parole chiave per l'indicizzazione. Ma non capisco quali passi devo seguire. Come leggo il file .PFD per estrarre le parole chiave.Come indicizzare un file .PDF in ElasticSearch
risposta
È necessario controllare lo elasticsearch-mapper-attachments plugin, poiché è molto probabile che ti aiuti a ottenere ciò di cui hai bisogno.
Installare elasticsearch plug-mapper-attaccamento e utilizzare il codice simile a:
public String indexDocument(String filePath, DataDTO dto) {
IndexResponse response = null;
try {
response = this.prepareIndexRequest("collectionName").setId(dto.getId())
.setSource(jsonBuilder().startObject()
.field("file", Base64.encodeFromFile(filePath))
.endObject()).setRefresh(true).execute().actionGet();
} catch (ElasticsearchException e) {
//
} catch (IOException e) {
//
}
return response.getId();
}
Sembra che il plugin elasticsearch-mapper-attaccamento è stata deprecata a 5.0.0 (26 ottobre Rilasciato, 2016). documentation consiglia di utilizzare Ingest Attachment Processor Plugin come sostituzione.
Per installare:
sudo bin/elasticsearch-plugin install ingest-attachment
Vedi How to index a pdf file in Elasticsearch 5.0.0 with ingest-attachment plugin? per informazioni su come utilizzare il plug-in allegato Ingest.
Questa è la risposta corretta a partire da oggi (18/11/2016). elasticsearch-mapper-attachments è obsoleto e non funziona con elasticsearch> = 5.0.0 ma 'ingest-attachment' funziona come un incantesimo. –
Per il mio progetto ho anche dovuto rendere i miei file .PDF locali per poter essere ricercati. ho raggiunto questo quanto segue:
- dati estratti da file .PDF utilizzando Apache Tika, ho usato Apache Tika perché mi dà la libertà per estrarre i dati da diverse estensioni con la stessa pipeline.
- Utilizzato l'output di Apache Tika per l'indicizzazione.
Di solito il mio indice sembrava:
{ filename: "FILENAME", filebody: "I dati estratti da Apache Tika" }
Ci sono molteplici soluzioni diverse là fuori come accennato qui usando anche Elasticsearch mapper-attachment plugin è un'ottima soluzione. Ho optato per questo approccio perché volevo lavorare con file di grandi dimensioni e diverse estensioni.
Come accennato plug elasticsearch-mapper-attacco è stato deprecato e invece Ingest plugin di attaccamento può essere utilizzato
https://www.elastic.co/guide/en/elasticsearch/plugins/current/ingest-attachment.html
Probabilmente bisogno di controllare i [elasticsearch-mapper-allegati dei plugin] (https://github.com/elastic/elasticsearch-mapper-attachments), dovrebbe fare ciò che ti aspetti. – Val
Grazie. Puoi per favore postare questo come risposta, in modo che io possa accettarlo. – KurioZ7
Se si desidera una soluzione pronta all'uso, è possibile provare [Ambar] (https://ambar.cloud) – SochiX