Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Motores de búsqueda escalables con Python y Ela...

Motores de búsqueda escalables con Python y Elasticsearch

Durante la charla hablaremos del las dificultades que encontramos cuando implementamos un buscador por texto libre o "full-text",
pasando a presentar Elasticsearch, daremos unas pinceladas de algunos conceptos básicos para entender como funcionan sus tripas y ver sus puntos fuertes y no tan fuertes.

Una vez estemos metidos en materia, pesaremos a presentar Elasticsearch DSL, que es una librería que nos permite realizar consultas de forma Pythonica a nuestro cluster Elastic. Aquí nos pondremos manos a la obra y veremos ejemplos muy didácticos de como realizar consultas, desde las más básicas a las más complicadas.

Avatar for José Miguel

José Miguel

May 10, 2019
Tweet

Other Decks in Technology

Transcript

  1. whoami Soy José Miguel López Graduado en Ingeniería Informática por

    la Universidad de Granada y apasionado de la nuevas tecnología. 2
  2. Índice 1. Búsquedas full text. 2. Introducción a Elasticsearch. a.

    Características b. Conceptos básicos. c. Analyzer / term frequency 3. Elasticsearch DSL. a. Conexión. b. Mapping. c. Indexing. d. Query / Filter / Ordering e. Aggregate. 3
  3. 10 • Ordenar los resultados en base a relevancia de

    los términos. • Variaciones de las palabras, singular, plural, masculino, femenino. • Sinónimos. • Fuzzy search o búsquedas imprecisas. • Highlight, resaltado de los match encontrados. Requisitos complejos :(
  4. 16 Relationnal database Elasticsearch Database Index Table Type Row Document

    Column Field Schema Mapping Index Everything is indexed SQL Query DSL SELECT * FROM table… GET http://… UPDATE table SET PUT http://… {JSON} Vocabulario
  5. 18 Mapping El mapping permite indicar los campos de los

    documentos De esta forma indicamos: - Los campos tratados como full-text y los que permiten realizar agregaciones. - Los campos que tienen tipos de dato complejos y su formato. - Configuración personalizada y “analyzer”. Tipos de datos: - Text: Permite realizar búsquedas por texto libre. - Keyword: Permite realizar ordenaciones y agregaciones. - Date: Fechas, permite realizar búsquedas por rangos. - Long / Double - Boolean - Ip - Complejos: Geo-point, Geo-share. Dynamic Mapping vs Explicit Mapping
  6. 20 Input CharFilter HTMLStripper TokenFilter Stopwords Tokenizer Standard TokenFilter Lowercase

    <p>The quick brown Fox jumps over the lazy dog</p> <h1>Quick brown foxes leap over lazy dogs in summer</h1> The quick brown Fox jumps over the lazy dog Quick brown foxes leap over lazy dogs in summer [“The”, “quick”, “brown”, “Fox”, “jumps”, “over”, “the”, “lazy”, “dog”] [“Quick”, “brown”, “foxes”, “leap”, “over”, “lazy”, “dogs”, “in”, “summer”] [“quick”, “brown”, “Fox”, “jumps”, “over”, “lazy”, “dog”] [“Quick”, “brown”, “foxes”, “leap”, “lazy”, “dogs”, “summer”] [“quick”, “brown”, “fox”, “jumps”, “over”, “lazy”, “dog”] [“quick”, “brown”, “foxes”, “leap”, “lazy”, “dogs”, “summer”]
  7. 22 INPUT Data Query search Index Analyzer TF/IDF Query result

    Filtered Tokenizer Query Busca en google o escribe una url TF/IDF
  8. 23 Queries Filters Se basa en el funcionamiento del analizador

    y computa relevancia. Modificadores: - match - multi_match - phrase - fuzzy - wildcard Rápido y cacheable. No se computa relevancia.(SI/NO). Modificadores: - term - geo, distance - bool - and/or/not Ordering Aggregation
  9. 25 Librería de alto nivel que ayuda a escribir y

    ejecutar consultas en Elastic. Proporciona una API más idiomática y pythonica para manipular y componer consultas. Orientación a objetos de los documentos. Definiendo el mapping, podemos rescatar, actualizar, guardar documentos. Elasticsearch DSL
  10. 26