curso completo de elasticsearch

Download Curso completo de Elasticsearch

Post on 25-Jul-2015

426 views

Category:

Software

7 download

Embed Size (px)

TRANSCRIPT

1. Elasticsearch Implementando bsquedas de datos eficientes y escalables Cool... bonsai cool Curso de capacitacin - Mercadolibre SRL Julio 2014 2. Quines somos? Fernando A. Rodriguez (Desarrolador Sr, SYI) Federico A. Ocampo (Supervisor, Buyingflow) Curso de Capacitacin - Julio 2014 3. Introducir al mundo de los motores de bsquedas y sus desafos. Aprender las caractersticas centrales de Elasticsearch (y Lucene)... ...y cmo utilizarlas para encarar estos desafos. Todo esto teniendo en cuenta los requerimientos de performance y escalabilidad de Mercadolibre Curso de Capacitacin - Julio 2014 Objetivos 4. Introduccin Capa distribuida E/S de datos Bsquedas bsicas Lucene Bsquedas avanzadas Analyzers Mapping Relevancia (Scoring) Aggregations Integracin Puesta en Produccin Funcionalidades avanzadas Curso de Capacitacin - Julio 2014 Agenda Da 1 Da 2 5. Bsquedas Las bsquedas son la principal interfaz para la obtencin de informacin en la actualidad. Curso de Capacitacin - Julio 2014 6. Curso de Capacitacin - Julio 2014 Bsquedas: Motores conocidos 7. Bsquedas: Motores conocidos Curso de Capacitacin - Julio 2014 Bsquedas: Motores conocidos 8. Curso de Capacitacin - Julio 2014 Bsquedas: Motores conocidos 9. Pero las bsquedas tienen sus desafos... Curso de Capacitacin - Julio 2014 Bsquedas: desafos 10. Curso de Capacitacin - Julio 2014 Bsquedas: desafos 11. Curso de Capacitacin - Julio 2014 Bsquedas: desafos 12. Curso de Capacitacin - Julio 2014 Bsquedas: desafos ? ? 13. Existen muchos productos y herramientas para implementar bsquedas de texto... Curso de Capacitacin - Julio 2014 Bsquedas: herramientas Bases de datos relacionales (SQL) Bases No relacionales (MongoDB) Soluciones Ad-Hoc ("te lo hago en bash") Motores de bsqueda full-text-search (Solr) ... y Elasticsearch 14. Curso de Capacitacin - Julio 2014 Introduccin a Elasticsearch 15. Curso de Capacitacin - Julio 2014 Qu es Elasticsearch? Es un motor de bsqueda, orientado a documentos, basado en Apache Lucene 16. Creado por Shay Kimchy Banon en el 2010: ...ElasticSearch itself was born out of my frustration with the fact that there isnt really a good, open source, solution for distributed search engine out there Mantenido por l hasta la creacin de Elasticsearch.com (http://elasticsearch.com/) en 2012 Actualmente desarrollado por la empresa, bajo licencia Apache 2 (muy flexible). La ltima versin a la fecha es la 1.3.2 (Requiere Java 7.x) Curso de Capacitacin - Julio 2014 Breve resea histrica 17. Orientado a documentos JSON's, Basado en Apache Lucene Libre de schemas Aunque permite definirlos de ser necesario Distribuido Escala dinmicamente, implementa HA Multi-Tenant Permite operar sobre mltiples ndices a la vez Centrado en API's Expone casi todas sus funcionalidades va APIs REST Curso de Capacitacin - Julio 2014 Qu caractersticas tiene? 18. Bsquedas no estructuradas Todos los items que contengan la palabra curso. Bsquedas estructuradas Items oro vendidos por el user X en Marzo. Aggregations / Facetas Promedio de precios de los items de la categora C. Combinaciones de todo lo anterior Promedio de precios de los items vendidos en Abril de los usuarios X e Y en la categora C. y todo en tiempo casi real! Curso de Capacitacin - Julio 2014 Y qu puede hacer? 19. # Crear un documento curl -XPOST "http://localhost:9200/items/item/MLA1" -d '{ "title" : "Condensador de flujo XT-2000" }' # Obtener un documento por ID curl -XGET "http://localhost:9200/items/item/1 # Buscar un documento por texto curl -XGET "http://localhost:9200/items/_search?q=Condensador" # Borrar por ID curl -XDELETE "http://localhost:9200/items/1" Curso de Capacitacin - Julio 2014 Una muestra gratis :) 20. Curso de Capacitacin - Julio 2014 Todo muy lindo pero.. quin lo usa? 21. Sistema distribuido Implementa la lgica de coordinacin de los nodos de un cluster y el mantenimiento de sus datos Motor de bsqueda Proporciona las funcionalidades de indexacin y bsqueda de documentos. Curso de Capacitacin - Julio 2014 Componentes principales Elasticsearch se compone de dos capas principales bien definidas y desacopladas: ... veamos como funciona la primera 22. Sistema distribuido Curso de Capacitacin - Julio 2014 23. Qu esperamos en Meli de un sistema distribuido? Performance Escalabilidad Alta disponibilidad Tolerancia a fallos Curso de Capacitacin - Julio 2014 Sistema distribuido: introduccin 24. Curso de Capacitacin - Julio 2014 Sistema distribuido: glosario Cluster Nodos Indices Tipos Conjunto de instancias de ES que comparten mismo nombre (cluster.name) Instancia de Elasticsearch Coleccin de varios documentos (objeto JSON), no necesariamente de igual estructura. Comparable a esquemas de bases de datos No confundir con ndices de bases de datos Coleccin de varios documentos de similar estructura Comparable a tablas de bases de datos 25. Curso de Capacitacin - Julio 2014 Sistema distribuido: Ejemplo Cluster: springfield Indice: usuario Tipo: preguntas NODO 1NODO ES USUARIO preguntas {...} compras {...} USUARIO Preguntas Compras 26. Curso de Capacitacin - Julio 2014 Sistema distribuido: ms sobre shards Particin de la informacin. Puede ser Primario (read/write) o Rplica (read-only). Un nodo puede administrar 1 o ms shards. La cantidad de shards primarios son definidos al crear el ndice y luego no se puede modificar Proveen alta disponibilidad y performance. Instancias de lucene independientes entre s . 27. Curso de Capacitacin - Julio 2014 Sistema distribuido: Ejemplo shard NODO 1Usuario homero homero lisa moe bart bart bart bart Pregunta p1 p2 p3 p4 p5 p6 p7 p8 1 shard NODO 1Usuario homero homero lisa moe Pregunta p1 p2 p3 p4 2 shards Usuario bart bart bart bart Pregunta p5 p6 p7 p8 28. NODO 2 Shard 1 (primario) Shard 0 (replica) NODO 1 Shard 0 (primario) Shard 1 (replica) curl -XPUT localhost:9200/test -d '{ "index" : { "number_of_shards" : 2, "number_of_replicas" : 1 } }' Curso de Capacitacin - Julio 2014 Sistema distribuido: shards y rplicas 29. Curso de Capacitacin - Julio 2014 Sistema distribuido: shards y rplicas Agregando un nodo... NODO 2 Shard 1 (primario) Shard 0 (replica) NODO 1 Shard 0 (primario) Shard 1 (replica) NODO 3 30. NODO 2 Shard 1 (primario) Shard 0 (replica) NODO 1 Shard 0 (primario) Shard 1 (replica) NODO 3 Shard 0 (replica) Curso de Capacitacin - Julio 2014 Sistema distribuido: shards y rplicas ...se balancea el cluster automticamente. 31. NODO 2 Shard 1 (primario) NODO 1 Shard 0 (primario) Shard 1 (replica) NODO 3 Shard 0 (replica) Curso de Capacitacin - Julio 2014 Sistema distribuido: shards y rplicas ...se balancea el cluster automticamente. 32. Curso de Capacitacin - Julio 2014 Sistema distribuido: shards y rplicas Ante la caida de un nodo... NODO 2 Shard 1 (primario) NODO 1 Shard 0 (primario) Shard 1 (replica) NODO 3 Shard 0 (replica) 33. NODO 1 Curso de Capacitacin - Julio 2014 Sistema distribuido: shards y rplicas ... se regeneran los shard faltantes NODO 2 Shard 1 (primario) Shard 0 (primario) NODO 3 Shard 0 (replica) Shard 1 (replica) 34. NODO 2NODO 1 Vamos a experimentar un poco con los shards... Curso de Capacitacin - Julio 2014 Sistema distribuido: simulacin 35. Data In / Out Curso de Capacitacin - Julio 2014 36. { "id": "MLA464468956", "title": "Departamento 3 Ambientes En Alquiler - Claypole R", "price": 5000, "geolocation": { "latitude": -34.56854, "longitude": -58.4678583, }, "pictures": [ {"url": "http://img2.mlstatic.com/s_MLA_v_O_f_447_062013.jpg"}, {"url": "http://img2.mlstatic.com/s_MLA_v_O_f_534_062014.jpg"} ], "date_created": "2013-06-12T18:46:00.000Z", } Los documentos se representan en formato JSON Cada campo contiene informacin de cierto tipo. Curso de Capacitacin - Julio 2014 Estructura de datos 37. ES agrega su propia Metadata a los documentos Campo _id _type _source _all _timestamp _ttl _size Default enabled enabled disabled disabled disabled Descripcin ID interno del documento Tipo de documento Guarda el doc original indexado Indexa todos los valores de todos los campos del documento. timestamp asociado al documento define una fecha de expiracin (opcional) almacena el tamao del _source descomprimido Curso de Capacitacin - Julio 2014 Estructura de datos 38. Tipos bsicos String, number, boolean Tipos complejos Array, Object Tipos extendidos Datetime, binary (base 64), ip, geo_point, multi-filed... ...ms detalles cuando veamos Mapping ES soporta los tipos de datos propios de JSON y otros tipos derivados, propios del sistema: Curso de Capacitacin - Julio 2014 Tipos de datos 39. Primero necesitamos un ndice... curl -XPUT localhost:9200/items -d '{ "settings" : { ... }, "mappings" : { ... } }' ... aunque si no lo creamos, ES lo hace por nosotros usando una configuracin por defecto. Nombre del ndice Configuraciones opcionales Curso de Capacitacin - Julio 2014 Insertando datos: Index API 40. Luego agregamos la informacin... curl -XPUT 'localhost:9200/items/item/MLA123' -d '{ "id" : "MLA-123" "title" : "Delorean modelo '85, joya nunca taxi", "kmts" : 325000 "seller": "MACFLY_1980" }' nombre tipooperacin HTTP REST nombre ndice ID documento documento JSON a indexar Curso de Capacitacin - Julio 2014 Insertando datos: Index API 41. Podemos dejar que ES defina el ID automticamente... curl -XPOST 'localhost:9200/items/item' -d '{ "id" : "MLA-123" "title" : "Delorean modelo '85, joya nunca taxi", "kmts" : 325000 "seller": "MACFLY_1980" }' nombre tipooperacin HTTP REST nombre ndice documento JSON a indexar Curso de Capacitacin - Julio 2014 Insertando datos: Index API 42. ... obteniendo como respuesta: { "ok" : true, "_index" : "items", "_type" : "item", "_id" : "MLA123", "_version" : 1 } nombre del ndice nombre del tipo id del documento versin del cocumento 201 (CREATED): Se cre un nuevo documento 200 (OK): Se actualiz un documento existente Curso de