{
"first_name": "Fabrice",
"last_name": "Depaulis",
"company": "Orange",
"departement": "TGI/OLS/SOFT",
"job": "Backend Developper",
"from": [{
"company": "PagesJaunes",
"job": "Data/Search Technical Leader"
},
{
"company": "NeoSoft",
"job": "Backend Developper"
},
{
"company": "SoftTeam",
"job": "Java Developper"
}
]
}Indexation
Pertinence
Recherche FullText
Autocomplétion
Agrégation et facettes
Correction orthographique
Documents
"crêpes" => {farine, œuf, lait}
"génoise" => {oeuf, sucre, farine}
"caramel" => {sucre, beurre}
"flan" => {oeuf, lait, sucre}
-------------------------------------
Index inversé
"farine" => {crêpes, génoise}
"oeuf" => {crêpes, génoise, flan}
"lait" => {crêpes, flan}
"sucre" => {génoise, caramel, flan}
"beurre" => {caramel}
(from wikipedia)Homonymes
Double sens
...
SQL
SELECT * FROM movies WHERE description LIKE "%anneaux%" OR description LIKE "%seigneur%"MOTEUR
Analyse des termes selon des règles prédéfinies, et recherche dans l'index inversé
Classifier les recherches
Bonne pratique : notifier l'utilisateur de la correction pour ne pas le perdre
S'appuie sur les données du moteur
S'appuie sur des distances
"Créateur" : Shay Banon
"Produit" : Compass (2004) puis ElasticSearch (basé sur Lucene)
"Idée" : gérer la monter en charge.
"Elasticsearch" : distribué, json, http
"V04" : 2010
"V1":2014
"2012" : création de l'entreprise ElasticSearch (Amsterdam)
"Levées de fonds" : 10 millions de dollars (2012), 24 millions (2013) et 70 millions (2014)
La société est cotée au NASDAQ depuis le 4 octobre 2018Une lib qui permet d’analyser et de tokeniser, de gérer des index, créer des documents, …
Pb : c’est juste une lib, qui gère mal les env distribués, …
Toutes les évolutions de Lucene impactent ElasticSearch et SolR
0.4.0
2010
1.0.0
2014
2.0.0
2015
5.0.0
2016
6.0.0
2017
7.0.0
2019
7.5.2
2020
Espace de stockage des documents
Représente une partie de la donnée métier utile pour le search
Gzip
Package RPM/Deb
Docker
As a service
Rest API : description
http://host:port/[index]/_doc/[_action|id]
Quelques exemples ? Création d'index et search ? Ou plus tard ?
# Fonctionnement shards, replicas, ...
Faire un TP où on fait tomber
Peut être à expliquer et faire plus tard ?
shards, réplicas, segments
index : création, maj, suppression, paramètres
Docs : création, maj, suppression, bulks
Id et version des docs
Refresh des index et segments
aliases
mapping
text analysis
Décomposition d'une requête
- search
- multi index
- pagination ?
- tri
- count
- Query String, match, bool query (must, should, ...), ...
A quoi ça sert
Agrégation de base : syntaxe
Décliner toutes les agrégations : term, range, ...