web-dev-qa-db-fra.com

Différence entre le mot clé et le texte dans ElasticSearch

Quelqu'un peut-il expliquer la différence entre le mot clé et le texte dans ElasticSearch avec un exemple?

15
archura

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

21
Tarek Essam