38
Moteurs de recherche un oeil sous le capot

Moteurs de recherche : un oeil sous le capot avec Elastic Search

Embed Size (px)

DESCRIPTION

Introduction to Lucene-based search engines with ElasticSearch

Citation preview

Page 1: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Moteurs de recherche

un oeil sous le capot

Page 2: Moteurs de recherche : un oeil sous le capot avec Elastic Search

/me

@Audrey_Neveu

@Programatoo @Devoxx4KidsFR

@

Page 3: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Un moteur de recherche pour quoi faire ?

Page 4: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Un moteur de recherche pour quoi faire ?

● cas d’école : site de e-commerce

● mais aussi réseaux sociaux, sites de

streaming … sites à “contenus”.

● pour apporter de la recherche “Google like”

à nos utilisateurs de SI.

Page 5: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Architecture type e-commerce

Site BUs Site web

Page 6: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Apache Lucene

écrit en Java, lancé en 2000

Page 7: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Elastic Search vs Solr

API Scalabilité Communauté

SIMPLICITE

Recherche

Page 8: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Use Case

Magasin de livres en ligne.curl -XPUT 'http://localhost:9200/store/book/1' -d

'{

"titre" : "H2G2 Le Guide du voyageur galactique, Tome 1 Le guide du voyageur galactique",

"auteur" : ["Douglas Adams"],

"editeur" : "Gallimard",

"genre" : "Science-Fiction",

"ISBN" : "2070437434",

"date de parution" : "11/03/2010",

"prix" : "6.27"

}'

Page 9: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Démo #1

Page 10: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Architecture type e-commerce

Site BUs Site web

Page 11: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Rivers

Plugin qui automatise l’indexation des documents

Page 12: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Rivers

Plugin qui automatise l’indexation des documents

Page 13: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Rivers

Plugin qui automatise l’indexation des documents

Page 14: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Rivers

Plugin qui automatise l’indexation des documents

Page 15: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Rivers

Plugin qui automatise l’indexation des documents

Page 16: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Architecture type e-commerce

Site BUs Site web

Page 17: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Avant de pouvoir rechercher

Un peu de config :

● les index

● les analyseurs

● le mapping

Prérequis : une bonne connaissance du métier

Page 18: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Les index regroupent des documents de même nature pour faciliter leur recherche.

Step 1/ J’indexe

Page 19: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Step 2/ J’analyse

“L’indexation repose sur un Analyzer,

qui n’est autre qu’un ensemble

de Tokenizers

et de TokenFilters.”

Page 20: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Les analyseurs

● Un tokenizer retourne une liste de tokens.

● Un filtre va modifier ou supprimer un token.

● Un analyzer = tokenizer + 0 … *

tokenFilters.

Page 21: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Analyseur standard

Page 22: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Analyzer = Tokenizer + TokenFilter"analyzer" : {

"myFrenchAnalyzer" : {

"type" : "custom",

"tokenizer" : "standard",

"filter" : [ "lowercase", "elision", "frenchStopWord" ]

}

},

"filter" : {

"elision" : {

"type" : "elision",

"articles" : [ "l" , "j" , "d" , "m" , "n" , "s" , "c" , "qu" , "t" ]

} ,

"frenchStopWord" : {

"type" : "stop",

"stopwords" : [ "_french_" ]

}

}

Page 23: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Démo #2

Page 24: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Testons l’indexation

L’indexation repose sur un Analyzer,

qui n’est autre qu’un ensemble

de Tokenizers

et de TokenFilters.

Page 25: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Standard Token Filter

L’indexation repose sur un Analyzer,

qui n’est autre qu’un ensemble

de Tokenizers

et de TokenFilters.

Page 26: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Lower Case Token Filter

l’indexation repose sur un analyzer,

qui n’est autre qu’un ensemble

de tokenizers

et de tokenfilters.

Page 27: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Elision Token Filter

l’indexation repose sur un analyzer,

qui n’est autre qu’un ensemble

de tokenizers

et de tokenfilters.

Page 28: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Stop Token Filter

l’indexation repose sur un analyzer,

qui n’est autre qu’un ensemble

de tokenizers

et de tokenfilters.

Page 29: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Résultat

L’indexation repose sur un Analyzer, qui n’est autre qu’un

ensemble de Tokenizers et de TokenFilters.

indexation repose analyzer autre ensemble tokenizers

tokenfilters

Page 30: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Le mapping

● Le mapping définit la façon dont les fields seront indexés.

● Le mapping par défaut d’ES va gérer dynamiquement tous les types.

● Mais il peut parfois être utile de définir soi même le mapping ...

Page 31: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Les fields_uid id + type

_id id

type field type du document

_source JSON passé à l’indexation

_all tous les champs

_analyzer l’analyseur à utiliser pour indexer le document

_ttl date d’expiration (time to live)

...

Page 32: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Les types

String Objects

Integer / Long Multi Fields

Float / Double IP

Boolean Geo Point

Date Geo Shape

Null attachment

Array ...

Page 33: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Custom Mapping{

"titre" : "H2G2 Le Guide du voyageur

galactique, Tome 1 Le guide

du voyageur galactique",

"auteur" : ["Douglas Adams"],

"editeur" : "Gallimard",

"genre" : "Science-Fiction",

"ISBN" : "2070437434",

"date de parution" : "11/03/2010",

"prix” : "6.27"

}

curl -XPUT 'http://localhost:9200/store/book/_mapping'

-d '{

"book" : {

"properties" : {

"genre" : {

"type" : "string",

"analyzer" : "keyword"

},

"_source" : {

"enabled" : false

}

}

}

}'

Page 34: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Step 3/ Je recherche !

Où l’on va parler ...

● query

● filters

● facets

● mais aussi sort, pagination, boost, score ...

Page 35: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Contenu de l’index

science fiction

fantasy

jeunesse

Livres

Comics

aventure

fantasy

AuteursYX Z

YY

X

X

X

Y

Y

Y

X

X

Z

Y

Y

Y

X

X

X

X

X

X

X

X

X

X

X

X

X

X

Z

Z

Z

Z

Page 36: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Objectif

Page 37: Moteurs de recherche : un oeil sous le capot avec Elastic Search

Démo #3