Hace algún tiempo el buen Yisus y yo hicimos una presentación en nuestro anterior trabajo sobre elasticsearch. Aquí pongo una breve a introducción.
Es un motor de busqueda open-source construido sobre Apache Lucene, una librería de motor de búsqueda para búsquedas full-text. Lucene es posiblemente la biblioteca de motor de busqueda más avanzada, de alto rendimiento y con funciones completas que existe actualmente.
Pero Lucene es solo una librería. Para aprovechar este poder, tu necesitas trabajar en Java e integrar Lucene directamente con tu aplicación. Peor aun, probablemente necesites un titulo en recuperación de información para entender como funciona. Lucene es muy complejo.
Elasticsearch también esta escrito en Java y usa Lucene internamente para toda su indexación y búsqueda, pero su objetivo es hacer las búsquedas más fácil, ocultando la complejidad de Lucene de tras de una simple, coherente API RESTful.
Elasticseach es mucho más que solo Lucene y mucho más que solo un motor de busqueda full-text. Este puede ser descrito como sigue:
Términos comunes.
- Un almacén de documentos en tiempo-real donde cada campo es indexado y se puede buscar.
- Un motor de búsqueda distribuido con analíticas en tiempo-real.
- Capaz de escalar a cientos de servidores y petabytes de datos estructurados y no estructurados.
- Un indice en Elastics es un espacio lógico para organizar tus datos.
- Un Indice de elastics tiene uno o mas shards.
- Un shard es un indice de Lucene, el cual realmente almacena los datos y es un motor de búsqueda por si solo.
- Un Indice de elastics también tiene tipos “types”, permite particionar tus datos en un indice.
Tipos de nodos
Una instancia de elasticsearch es un nodo y un grupo de nodos forman un cluster. Los nodos pueden ser configurados en tres diferentes formas:Nodo maestro: Controla el cluster de Elasticsearch y es el responsable para todas las operaciones al rededor del cluster, como: crear / borrar un indice, manteniendo el rastro de cuales nodos son parte del cluster y asigna shards a los nodos. El nodo maestro procesa el estado del cluster a la vez y difunde el estado de todos los otros nodos quienes responden de confirmación al maestro. Para grandes clusters en producción, es recomendable tener un nodo maestro dedicado para controlar el cluster y no servir ninguna petición del usuario.
Node de datos: Este mantiene los datos e indice invertido. Por default, cada nodo esta configurado para ser un nodo de datos
Nodo cliente: Actuá como un balanceador encaminando las solicitudes de entrada a los diferente nodos del cluster.
El nodo en el cluster Elasticsearch que conectas como un cliente es llamado el nodo coordinador. El nodo coordinador enruta las solicitudes del cliente al apropiado shard en el cluster. Para leer solicitudes, el nodo coordinador selecciona diferente shard cada vez para servir las solicitudes en orden para balancear la carga.
Comentarios