web-dev-qa-db-fra.com

Elasticsearch renvoie toujours "le type de mappage est manquant"

Je suis les conseils donnés ici afin de trouver des mots partiels avec elasticsearch:

ElasticSearch n-gram tokenfilter ne trouve pas de mots partiels

J'ai créé un simple script bash qui tente d'exécuter une version de ceci:

curl -XDELETE 10.160.86.134:9200/products
curl -XPOST 10.160.86.134:9200/products -d '{
  "index": {
    "number_of_shards": 1,
    "analysis": {
       "filter": {
         "mynGram" : {"type": "nGram", "min_gram": 2, "max_gram": 10}
       },
       "analyzer": {
         "a1" : {
           "type":"custom",
           "tokenizer": "standard",
           "filter": ["lowercase", "mynGram"]
         }
       }
     }
    }
  }
}'

curl -XPUT 10.160.86.134:9200/products/_mapping -d '{
  "product" : {
    "index_analyzer" : "a1",
    "search_analyzer" : "standard",
    "properties" : {
      "product_description": {"type":"string"},
      "product_name": {"type":"string"}
    }
  }
}'

Après avoir exécuté ce script, les deux premières commandes (vidage des produits, puis définition de l'index) semblent fonctionner en me donnant ceci:

{"ok":true,"acknowledged":true}
{"ok":true,"acknowledged":true}

Ensuite, il se trompe après l'appel de mappage en me donnant ceci:

{"error":"ActionRequestValidationException[Validation Failed: 1: mapping type is missing;]","status":500}

Quelqu'un peut-il voir ce que je fais mal? La recherche google démarre la saisie semi-automatique "cartographie introuvable elasticsearch", il semble donc que ce soit une erreur très courante.

39
Travis

Il s'avère que cela se produit car le mappage doit être appliqué au type:

J'ai essayé de l'appliquer à la mauvaise chose:

curl -XPUT 10.160.86.134:9200/products/_mapping -d '{

Il doit être appliqué au type comme ceci:

curl -XPUT 10.160.86.134:9200/products/product/_mapping -d '{

Il est triste qu'une simple recherche Google ne puisse pas répondre à cette question. De plus, le post précédent auquel j'ai lié est très trompeur et la réponse est fausse, ce que je soulignerai également.

103
Travis

Définir le mappage pour l'index est possible dans la recherche élastique. J'ai essayé cela avec la dernière version de Elastic search 1.7.3 et j'ai réussi à définir le mappage avec succès sur l'index.

J'ai essayé ce qui suit,

2
Thamizharasu