En post anteriores hablamos de Beats y Logstash ahora es el turno de Elasticsearch uno de los pilares en lo que respecta al almacenamiento de la información que queremos monitorizar. Sin más que agregar te invito a continuar leyendo.

¿Qué es Elasticsearch?

Elasticsearch, una de las herramientas del stack de Elastic es un servidor que provee un motor de búsqueda de texto y que nos servirá para guardar los logs que queremos monitorizar y poder encontrarlos de una manera rápida y eficaz. Esta basado en Lucene, una API escrita en Java de código abierto para recuperación de información. En resumen busca en un conjunto de documentos de texto uno o más términos definidos por el usuario.

Características

Dentro de las características más destacables podemos mencionar que es orientado a documentos y utiliza JSON para almacenar la información, para exponer sus funcionalidades utiliza una API REST y es altamente escalable horizontalmente, es decir, si la demanda aumenta podemos agregar mas nodos alojados en un cluster, para ello Elastic enruta las peticiones al nodo específico del cluster que contenga la información necesaria.

¿Qué es la indexación?

Para entender este concepto lo primero es entender qué es un índice, en Elasticsearch un índice es una colección de documentos relacionados entre sí. Como bien se dijo en las características de esta herramienta, se guardan los datos como documentos JSON, estos documentos se relacionan con claves, esas claves denominado índice invertido permite búsquedas de texto complejas y a gran velocidad.

Poniendo el siguiente ejemplo es probable que se entienda mejor:

Tenemos la siguiente información

Cada uno de estos títulos se definen como documentos



Ahora bien cada palabra se guarda en una tabla y se relaciona con el id del documento como vemos aquí

De esta manera muy simplificada es como se busca algún tipo de información en Elasticsearch, obviamente estos términos se pueden analizar para poder configurar mejor los criterios de búsqueda y poder hacer búsquedas mas completas y personalizadas.

Para poder realizar este mapeo lo que hace Elasticsearch es pasar la información por un proceso llamado tokenización que lo que permite es tomar la información y separarla en términos quedando así todas las palabras que componen por ejemplo el title asociadas a este documento. Este a su vez se compone de muchos sistemas de tokenización, el estándar busca palabra por palabra, es decir separa por espacios. El siguiente paso es el análisis, por cada término que haya obtenido:

Aquí un ejemplo de lo que se podría hacer es agregar analizadores, por ejemplo un analizador en español y un analizador de sinónimos que nos permite además agrupar las palabras que tengas significados similares para mejorar las búsquedas. En este caso los artículos se quedan tachados ya que no los utilizaremos en una búsqueda y queremos que lo excluya.

Ahora bien, que pasa si queremos saber todos los términos que tiene el documento uno, tendríamos un problema porque el índice invertido nos obligaría a recorrer todos los términos en busca de los que se encuentren en el documento uno. Para esto Elasticsearch nos tiene una mejor solución, los Doc values, que básicamente seria una tabla con todos los términos y sus asociaciones con su documento.



Este post llego a su fin y espero que te mantengas atento porque vamos a continuar con este tema en breve. Muchas gracias por leer.



Mandanos tus sugerencias

Ayudanos con ideas para los artículos de este blog a contacto@somospnt.com

¡Seguínos en nuestras redes sociales para enterarte de los últimos posts!