Tengo pendiente este post sobre ElasticSearch desde hace al menos 1 año…y ha tenido que venir Fernando para recordármelo 😀
Elasticsearch es un producto open source que podría definirse como un motor de búsqueda distribuido en tiempo real basado en Java.
Sus principales características son:
· Datos en tiempo real: ElasticSearch disponibiliza los últimos cambios realizados sobre los datos en tiempo real
· Distribuido y escalable horizontalmente: lo que nos permite ir creciendo conforme lo hagan nuestras necesidades.
· Alta Disponibilidad: los clusters Elasticsearch son capaces de detectar y eliminar nodos que estén fallando y reorganizarse a sí mismos para asegurar que los datos estén a salvo y permanezcan accesibles.
· Multi-tenancy: Un cluster de Elasticsearch puede alojar múltiples índices que pueden ser consultados de manera independiente. También permite definir índices online.
· Búsquedas full-text: Elasticsearch se basa en Lucene para sus capacidades de búsqueda de texto, soportando geolocalización, autocompletado,…
· Orientado a documentos: Las entidades se almacenan en Elasticsearch como documentos JSON estructurados. Todos los campos son indexados por defecto y todos los índices pueden ser usados en una misma consulta.
· Gestión de conflictos: provee mecanismos (optimistic version control) para asegurar que los datos no se pierdan debido a cambios simultáneos sobre un mismo documento realizados por diferentes procesos.
· Sin esquemas: permite trabajar sin esquemas que definan la estructura de los datos.
· API Restful. Elasticsearch proporciona un API Restful sobre JSON. Además ofrece Apis para otros lenguajes como Java.
Algunos productos como Kibana usan ElasticSearch como almacenamiento.
El uso de ElasticSearch es enormemente sencillo:
· Se arranca con un comando (en Windows bin/elasticsearh.bat)
· En la URL http://localhost:9200/indica su estado
· Para indexar documentos (con curl):
Las inserciones se hacen en una URL de este estilo:
http://<dominio>/<indice>/<tipo>/<id>
por tanto mails es el índice que se creará la primera vez que inserte un elemento.
· Para consultar por clave: curl -XGET localhost:9200/mails/message/1
Que devuelve:
· Para recuperar documentos de índice mails, tipo message y from:unpocodejava@wordpress.com :
curl -XGET localhost:9200/mails/message/_search?q=from:unpocodejava@wordpress.com
Sin duda que ElasticSearch es una gran alternativa a Apache Solr fundamentalmente por su rápida puesta en marcha (facilidad de despliegue y configuración) y naturaleza distribuida aunque perdamos una riqueza funcional que ofrece Solr (a veces difícil de usar/implementar).
Siempre que pienso en ElasticSearch se me ocurre un ElasticSearch vs MongoDB (al estilo de esas míticas peleas entre superhéroes de Bat In The Sun), y aunque eso se merezca un post o varios, algunos links:
System Properties Comparison Elasticsearch vs. MongoDB
Why should not I use ElasticSearch as my primary datastore?
Usando MongoDB con ElasticSearch (esto me suena a la peli de Batman con Superman…que me da miedito, aunque a lo mejor al final me convence):











Replica a e100405 Cancelar la respuesta