Elasticsearch Public

Elasticsearch

Patricio Sebastian Mendoza
Course by Patricio Sebastian Mendoza, updated more than 1 year ago Contributors

Description

Elasticsearch es un servidor de búsqueda basado en Lucene. Provee un motor de búsqueda de texto completo, distribuido y con capacidad de multitenencia con una interfaz web RESTful y con documentos JSON

Module Information

No tags specified
Elasticsearch es un servidor de búsqueda basado en Lucene. Provee un motor de búsqueda de texto completo, distribuido y con capacidad de multitenencia con una interfaz web RESTful y con documentos JSON. Elasticsearch está desarrollado en Java y está publicado como código abierto bajo las condiciones de la licencia Apache.   1 Historia 2 Queries - consultas 3 Ventajas 4 Desventajas 5 Resumen
Show less
No tags specified
Shay Banon creó Compass en 2004.1​ Mientras pensaba en la tercera versión de Compass, llegó a la conclusión de que habría que reescribir grandes partes de su código para “crear una solución de búsqueda escalable”. Entonces creó “una solución construida para ser distribuida desde el comienzo” con la interfaz JSON sobre HTTP, muy común y adecuada para lenguajes de programación que no sean Java.1​ Shay Banon liberó la primera versión en febrero de 2010.2​
Show less
No tags specified
Queries[editar] Elasticsearch utiliza Query DSL (Lenguaje de dominio específico) para realizar las consultas a los documentos indexados. Es un lenguaje sumamente flexible y de gran alcance, además de simple, que permite conocer y explorar los datos de la mejor manera. Al ser utilizado a través de una interfaz de tipo JSON, las consultas son muy sencillas de leer y, lo más importante, de depurar. Sobre la base de su estructura y componentes, las consultas se componen de dos cláusulas: "Leaf Query Clauses" y "Compound Query Clauses". La primera hace referencia a aquellas consultas que tienen operaciones como "match", "term" o "range", que devuelven un valor especifico solicitado. Las segundas se podría decir que son una combinación de la primera, una manera de realizar consultas "conjuntas" para obtener información más compleja y detallada. Tipos de consultas[editar] Una consulta comienza con la palabra "query" seguida de unas condiciones y filtros dentro, en la forma de un objeto JSON. Existen distintos tipo de consultas que podemos identificar, por ejemplo: Match all query[editar] La consulta más básica que se puede hacer. Devuelve todos los objetos que se encuentren indexados: { "query":{ "match_all":{} } } Match query[editar] Este tipo de consulta se utiliza para realizar una búsqueda donde se busca igualar determinados valores de un término o una frase. Entonces, si buscamos, por ejemplo dentro de nuestra base de datos, todos los objetos cuyo atributo color es verde, tomaría la siguiente forma: { "query":{ "match" : { "color":"verde" } } } Multi match query[editar] Muy similar a la consulta descrita anteriormente, pero en lugar de buscar la coincidencia con un valor solo, chequea con varios campos: { "query":{ "multi_match" : { "query": "montevideo", "fields": [ "ciudad", "departamento" ] } } } Term queries[editar] Este tipo de consultas se utilizan cuando se trabaja con datos como números o fechas, para buscar el valor de un término concreto: { "query":{ "term":{"animal":"perro"} } } Range query[editar] Otro tipo de consultas son aquellas que buscan por el rango de determinado atributo. Se utilizan distintos operadores ("gte": mayor ó igual a determinado valor, "gt": mayor a determinado valor, "lte": menor ó igual , "lt": menor): { "query":{ "range":{ "rating":{ "gte":4 } } } } Estos son algunos de los ejemplos de consulta que se pueden utilizar. Son muchas más las opciones, los operadores y los filtros que se pueden usar; sobre todo si se empieza a combinar los mismos.
Show less
No tags specified
Ventajas Se podrían enumerar varias ventajas que brinda esta herramienta. Algunas de las más destacables son las siguientes: Al estar desarrollado en Java, es compatible en todas las plataformas donde Java lo sea. Tiene una gran velocidad de respuesta. Es distribuido, lo que lo hace fácilmente escalable y adaptable a las distintas situaciones. Simple realiza respaldos de los datos almacenados. Utiliza objetos JSON como respuesta, por lo que es fácil de invocar desde varios lenguajes de programación. Desventajas Como todo, ElasticSearch posee algunas desventajas: Sólo soporta como tipos de respuesta JSON, lo que lo limita al no soportar otros lenguajes, como CSV ó XML. Algunas situaciones pueden generar casos de split-brain. Resumen Elasticsearch puede ser usado para buscar todo tipo de documentos. La búsqueda es escalable y casi en tiempo real, soportando multi-tenencia.57​ “Es distribuido, haciendo que los índices se puedan dividir en fragmentos y cada uno teniendo cero o más réplicas. Cada nodo alberga uno o más fragmentos, actuando como un coordinador para delegar operaciones a los fragmentos correctos. El rebalanceo y ruteo se realizan automáticamente […]”. Utiliza Lucene e intenta hacer todas sus funciones disponibles a través de JSON y Java API. Soporta facetado y percolación,​ que puede ser útil para notificar si nuevos documentos coinciden con consultas registradas. Otra funcionalidad llamada "gateway" maneja la persistencia a largo plazo del índice;59​ por ejemplo, se puede recuperar un índice del gateway en caso de una caída del servidor. Soporta peticiones GET en tiempo real y esto lo hace válido para una solución NoSQL, pero carece de transacciones distribuidas.
Show less
Show full summary Hide full summary