Quelqu'un peut-il expliquer la différence entre le mot clé et le texte dans ElasticSearch avec un exemple?
mot-clé type: si vous définissez un champ comme étant de type mot-clé comme celui-ci.
PUT products
{
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "keyword"
}
}
}
}
}
Ensuite, lorsque vous effectuez une requête de recherche sur ce champ, vous devez insérer la valeur entière (recherche par mot-clé) pour le champ de mot-clé.
POST products/_doc
{
"name": "washing machine"
}
lorsque vous exécutez une recherche comme celle-ci:
GET products/_search
{
"query": {
"match": {
"name": "washing"
}
}
}
il ne correspondra à aucun document. Vous devez rechercher avec le mot entier "machine à laver".
le type de texte d'autre part est analysé et vous pouvez rechercher en utilisant des jetons à partir de la valeur du champ. une recherche plein texte dans toute la valeur:
PUT products
{
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text"
}
}
}
}
}
et la recherche:
GET products/_search
{
"query": {
"match": {
"name": "washing"
}
}
}
renverra un document correspondant.
Vous pouvez vérifier cela pour plus de détails mot-clé vs texte