introducción a elasticsearch

Post on 15-Apr-2017

57 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Elastic SearchUh ! Elastic Search

@marcossegovia

Shay Banon liberó la primera versión de ES en 2010

Motor de búsqueda basado en Apache Lucene

Vamos a escalar

?

Apache Lucene

Librería hecha en Java útil para cualquier aplicación que requiera indexado y búsqueda a texto completoOpen sourceCon la gente de Apache Foundation dando soporteFuncionando desde el 1999

Cómo se está vendiendo?

Cómo se está vendiendo?

Cómo se está vendiendo?

Características

Búsquedas sobre Apache Lucene (Motor búsqueda Java)

Full Text Search

Distribuido

Multi-Entorno

API REST

JSON Request/Response

Asentemos la terminología

Realtime Engine significa Propagación

Cluster significa Colección de Nodes

Node significa un server que forma parte de UN Cluster

Index significa Colección de Documents bajo mismos o distintos Types

Type significa Categoría/Entidad/Clase

Document significa Unidad Básica de Información

Básicamente para que?

Indexar toda la información para que pueda ser buscada de manera óptima.

Esta vez VOLCANDO la información, real e idéntica.Sí, ES soporta cualquier DataType

DataTypes

StringFull text stringKeywords string

Numericlonginteger

Date

Boolean

ComplexObjectArray

Nested

Geo

Specialized

… Geo PointGeo Shape

IPv4…

string…

Searching

Leaf query clauseBúsqueda de un valor en un campo

Compound query clause

Combinan Leaf queries u otras Compound queries de manera lógica

Searching

Query Context

Filter Context

“¿Como de bien ‘matchea’ este Document en mi query clause?”

“¿Matchea este Document en mi query clause?”

Performance: Filtros usados frecuentemente serán cacheados por ElasticSearch

“filter”: { }

“query”: { }

Searching

Full text queries

match estándar query

match_phrase como match, pero con múltiples palabras

match_phrase_prefix como match_phrase pero intenta autocompletar la última palabra

multi_match estándar query contra múltiples campos

Searching

No sólo full text queries…term level query

geo querycompound query

joining querytermrange

boolconstant_score…

nested

……

existshas_child

Ejemplo molón

Referencia: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html

POST /_search

Filter Context

No afecta al scoring total

Query Context

Calculará un scoring sobre los que cumplan

CompoundQuery

LeafQuery

Pero…

no os he dicho toda la verdad.

Y la verdad es…

QUE VOY A GANAR LA PORRA !

nah… la verdad es que existen los Analyzers

Analyzers

El proceso de analysis es simplemente llevar el texto a términos o tokens hacia el índice de ES.

El proceso lo aplica un analyzer específico cuando:

Se indexan nuevos documentos

Se realiza una búsqueda

El analyzer a utilizar se puede especificar en la misma query o en el mapping del índice

Analyzers

Standard Analyzer

AggregationsMisma query, danos internet

Distribución y Escalabilidad

Distribución y Escalabilidad

ElasticSearch from the bottom up - EuroPython 2014Lucene index - Elastic index 13:30

Planifica los shardings con previsión 16:17

Por defecto: 1 índice se crea con 5 shards y 1 réplica

El número de replicas se puede cambiar dinámicamente, los shards no

Por tanto, 10 shards.

Todo esto y más en…

Effective Elastic Search https://gist.github.com/MarcosSegovia/c4f9585d0450791470485c68514acc05

Migración de Sphinx a Elastic Search https://gist.github.com/MarcosSegovia/edcc2b766eede8ddc2409e59f10e43c3

Directorio en Postman con múltiples ejemplos.

Por cada pregunta se crea un Order nuevo para mañana

Si queréis más, saco el Postman

top related