Elasticsearch
Analyseurs
Recherche…
Remarques
Les analyseurs prennent le texte d'un champ de chaîne et génèrent des jetons qui seront utilisés lors de l'interrogation.
Un analyseur fonctionne dans une séquence:
-
CharFilters(zéro ou plus) -
Tokenizer(One) -
TokenFilters(zéro ou plus)
L'analyseur peut être appliqué aux mappages de sorte que, lorsque les champs sont indexés, ils soient effectués sur une base individuelle plutôt que sur la chaîne dans son ensemble. Lors de l'interrogation, la chaîne d'entrée sera également exécutée via l'analyseur. Par conséquent, si vous normalisez le texte dans l'analyseur, il correspondra toujours même si la requête contient une chaîne non normalisée.
Cartographie
Un analyseur peut être appliqué à un mappage en utilisant "analyseur", par défaut l'analyseur "standard" est utilisé. Alternativement, si vous ne souhaitez pas utiliser d’analyseur (parce que la segmentation ou la normalisation ne serait pas utile), vous pouvez spécifier "index": "not_analyzed"
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "my_user_name_analyzer"
},
"id": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
Multi-champs
Parfois, il peut être utile d'avoir plusieurs index distincts d'un champ avec différents analyseurs. Vous pouvez utiliser la fonctionnalité multi-champs pour le faire.
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "standard",
"fields": {
"special": {
"type": "string",
"analyzer": "my_user_name_analyzer"
},
"unanalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
Lors de l'interrogation, au lieu d'utiliser simplement "user.name" (qui dans ce cas utiliserait toujours le standard Analyzer), vous pouvez utiliser "user.name.special" ou "user.name.unanalyzed". Notez que le document restera inchangé, cela ne concerne que l'indexation.
Analyseurs
L'analyse dans elasticsearch entre en contexte lorsque vous souhaitez analyser les données de votre index.
Les analyseurs nous permettent d'effectuer les opérations suivantes:
- Abréviations
- Enracinement
- Manipulation de typo
Nous allons regarder chacun d'eux maintenant.
Abréviations :
En utilisant des analyseurs, nous pouvons dire à elasticsearch comment traiter les abréviations dans nos données, c'est-à-dire dr => Doctor.
Stemming :
L’utilisation des méthodes d’analyse nous permet d’utiliser des mots de base pour des verbes modifiés comme
Mot Modifications exiger exigence requise
Typo Handling :
Les analyseurs fournissent également une gestion des fautes de frappe en interrogeant si nous recherchons des mots particuliers, disons «résurrection», alors elasticsearch retournera les résultats dans lesquels les fautes de frappe sont présentes.
Mot Modifications résurrection la résurrection, la résurrection
Analyseurs dans Elasticsearch
la norme
Simple
Espace blanc
Arrêtez
Mot-clé
Modèle
La langue
Boule de neige
Ignorer l'analyseur de cas
Parfois, il peut être nécessaire d'ignorer la casse de notre requête par rapport à la correspondance dans le document. Un analyseur peut être utilisé dans ce cas pour ignorer le cas lors de la recherche. Chaque champ devra contenir cet analyseur dans sa propriété pour pouvoir fonctionner:
"settings": {
"analysis": {
"analyzer": {
"case_insensitive": {
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
}
}