162 votes

L'en-tête Content-Type [application/x-www-form-urlencoded] n'est pas pris en charge sur Elasticsearch

J'avais ElasticSearch 5.2 et je viens de passer à 6.0.

Je tente de créer un modèle d'index en suivant le guide ici, mais j'ai une erreur

L'en-tête Content-Type [application/x-www-form-urlencoded] n'est pas pris en charge

Ma requête est

curl -X PUT localhost:9200/_template/template_1 -d '
{
  "index_patterns": ["te*", "bar*"],
  "mappings": {
    "type1": {
      "properties": {
        "host_name": {
          "type": "keyword"
        }
      }
    }
  }
}'

275voto

sam Points 3419

Pour corriger cela, ajoutez l'option curl -H 'Content-Type: application/json'


Cette erreur est due à la vérification stricte du type de contenu introduite dans ElasticSearch 6.0, comme expliqué dans cet article

À partir d'Elasticsearch 6.0, toutes les requêtes REST incluant un corps doivent également fournir le bon type de contenu pour ce corps.

0 votes

Bonjour @sam, Y a-t-il une solution permanente pour que je n'aie pas à fournir ce drapeau à chaque demande.

2 votes

@sam merci sam cependant lorsque j'ajoute l'option curl, cela me donne {"error":"En-tête Content-Type [application/x-www-form-urlencoded] n'est pas pris en charge","status":406}curl: (6) Impossible de résoudre le nom de l'hôte: application

8 votes

@haneulkim Si vous exécutez curl sur Windows, vous devez utiliser le caractère de guillemets doubles au lieu de l'apostrophe. Voici un exemple de commande curl sur Windows: curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H "Content-Type: application/json" -d" {\"name\": \"John Doe\"}"

14voto

Z.LI Points 11

La solution est d'ajouter l'en-tête Content-Type: application/json

curl -XPUT 'localhost:9200/_template/template_1' \
  -H 'Content-Type: application/json' \
  -d '**votre requête**'

5voto

charlie9526 Points 61
"{ \"name\": { \"first\": {} }, \"address\": [ { \"address1\":\"lane\" } ] } "

Sous Windows, lorsque vous donnez du JSON en tant que paramètre, utilisez uniquement des guillemets doubles. Utilisez le caractère d'échappement.

0 votes

Merci, c'était vraiment utile

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X