español - ¿Cómo indexar un archivo pdf en Elasticsearch 5.0.0 con el complemento ingest-attachment?
elk (1)
Soy nuevo en Elasticsearch y leo aquí https://www.elastic.co/guide/en/elasticsearch/plugins/master/mapper-attachments.html que el complemento de adjuntos mapper está en desuso en elasticsearch 5.0.0.
Ahora intento indexar un archivo pdf con el nuevo complemento de ingestión y cargar el archivo adjunto.
Lo que he intentado hasta ahora es
curl -H ''Content-Type: application/pdf'' -XPOST localhost:9200/test/1 -d @/cygdrive/c/test/test.pdf
pero me sale el siguiente error:
{"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}
Esperaría que el archivo pdf sea indexado y cargado. ¿Qué estoy haciendo mal?
También probé Elasticsearch 2.3.3, pero el complemento de adjuntos mapper no es válido para esta versión y no quiero utilizar ninguna versión anterior de Elasticsearch.
Debe asegurarse de haber creado su tubería de ingesta con:
PUT _ingest/pipeline/attachment
{
"description" : "Extract attachment information",
"processors" : [
{
"attachment" : {
"field" : "data",
"indexed_chars" : -1
}
}
]
}
Luego puede hacer un PUT no POST a su índice usando la tubería que ha creado.
PUT my_index/my_type/my_id?pipeline=attachment
{
"data": "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0="
}
En tu ejemplo, debería ser algo como:
curl -H ''Content-Type: application/pdf'' -XPUT localhost:9200/test/1?pipeline=attachment -d @/cygdrive/c/test/test.pdf
Recordando que el contenido PDF debe estar codificado en base64.
Espero que te ayude.
Edit 1 Por favor, asegúrese de leer estos, me ayudó mucho:
Editar 2
Además, debe tener el complemento de inserción de ingestión instalado.
./bin/elasticsearch-plugin install ingest-attachment
Editar 3
Antes de crear su procesador de ingesta (adjunto), cree su índice , haga un mapa con los campos que usará y asegúrese de tener el campo de datos en su mapa (el mismo nombre del "campo" en su procesador de adjuntos), así que ingiera procesará y completará su campo de datos con su contenido de pdf.
Inserté la opción indexed_chars en el procesador de ingestión , con -1 valor, por lo que puede indexar archivos PDF grandes.
Editar 4
El mapeo debería ser algo así:
PUT my_index
{
"mappings" : {
"my_type" : {
"properties" : {
"attachment.data" : {
"type": "text",
"analyzer" : "brazilian"
}
}
}
}
}
En este caso, uso el filtro brasileño , pero puede eliminarlo o usar el suyo.