tutorial que instalar elastic ejemplos csv elasticsearch logstash

csv - que - logstash tutorial



Importando y actualizando datos en Elasticsearch (3)

¿Has intentado cambiar la configuración a esto?

filter { csv { columns => ["_id","postal_code","address_1","city","state_code"] separator => "|" } }

Al nombrar a property_id como _id, debe utilizarse durante la indexación.

Tenemos una función de búsqueda existente que involucra datos en varias tablas en SQL Server. Esto causa una gran carga en nuestra base de datos, por lo que estoy tratando de encontrar una mejor manera de buscar a través de estos datos (no cambia muy a menudo). He estado trabajando con Logstash y Elasticsearch durante aproximadamente una semana usando una importación que contiene 1.2 millones de registros. Mi pregunta es esencialmente, "¿cómo actualizo los documentos existentes con mi ''clave principal''?

El archivo de datos CSV (delimitado por tuberías) se ve así:

369|90045|123 ABC ST|LOS ANGELES|CA 368|90045|PVKA0010|LA|CA 367|90012|20000 Venice Boulvd|Los Angeles|CA 365|90045|ABC ST 123|LOS ANGELES|CA 363|90045|ADHOCTESTPROPERTY|DALES|CA

Mi configuración de logstash se ve así:

input { stdin { type => "stdin-type" } file { path => ["C:/Data/sample/*"] start_position => "beginning" } } filter { csv { columns => ["property_id","postal_code","address_1","city","state_code"] separator => "|" } } output { elasticsearch { embedded => true index => "samples4" index_type => "sample" } }

Un documento en elasticsearch, entonces se ve así:

{ "_index": "samples4", "_type": "sample", "_id": "64Dc0_1eQ3uSln_k-4X26A", "_score": 1.4054651, "_source": { "message": [ "369|90045|123 ABC ST|LOS ANGELES|CA/r" ], "@version": "1", "@timestamp": "2014-02-11T22:58:38.365Z", "host": "[host]", "path": "C:/Data/sample/sample.csv", "property_id": "369", "postal_code": "90045", "address_1": "123 ABC ST", "city": "LOS ANGELES", "state_code": "CA" }

Creo que me gustaría que la ID única en el campo _id , fuera reemplazada por el valor de property_id . La idea es que los archivos de datos posteriores contengan actualizaciones. No necesito mantener versiones anteriores y no habría un caso en el que agregáramos o elimináramos claves de un documento.

La configuración de document_id para la salida de _id no pone el valor de ese campo en _id (solo se pone en "property_id" y solo se almacena / actualiza un documento). Sé que me estoy perdiendo algo aquí. ¿Estoy tomando el enfoque equivocado?

EDITAR: ¡TRABAJANDO!

Usando la sugerencia de @ rutter, he actualizado la configuración de output a esto:

output { elasticsearch { embedded => true index => "samples6" index_type => "sample" document_id => "%{property_id}" } }

Ahora los documentos se actualizan colocando nuevos archivos en la carpeta de datos como se esperaba. _id y property_id tienen el mismo valor.

{ "_index": "samples6", "_type": "sample", "_id": "351", "_score": 1, "_source": { "message": [ "351|90045|Easy as 123 ST|LOS ANGELES|CA/r" ], "@version": "1", "@timestamp": "2014-02-12T16:12:52.102Z", "host": "TXDFWL3474", "path": "C:/Data/sample/sample_update_3.csv", "property_id": "351", "postal_code": "90045", "address_1": "Easy as 123 ST", "city": "LOS ANGELES", "state_code": "CA" }


Convertir de comentario:

Puede sobrescribir un documento enviando otro documento con la misma ID ... pero eso podría ser complicado con sus datos anteriores, ya que de manera predeterminada obtendrá ID aleatorias.

Puede establecer una ID utilizando el campo document_id del complemento de salida, pero toma una cadena literal, no un nombre de campo. Para usar el contenido de un campo, puede usar una cadena de formato sprintf , como %{property_id} .

Algo como esto, por ejemplo:

output { elasticsearch { ... other settings... document_id => "%{property_id}" } }


declaimer - soy el autor de ESL
Puedes usar elasticsearch_loader para cargar archivos psv en elasticsearch.
Para configurar el campo _id puede usar --id-field = property_id. por ejemplo:
elasticsearch_loader --index=myindex --type=mytype --id-field=property_id csv --delimiter=''|'' filename.csv