El encabezado Content-Type [application / x-www-form-urlencoded] no es compatible con Elasticsearch

133

Solía ​​tener ElasticSearch 5.2, y acabo de actualizar a 6.0.

Estoy tratando de crear una plantilla de índice siguiendo la guía aquí , pero recibí un error

Content-Type header [application/x-www-form-urlencoded] is not supported

Mi consulta es

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

Respuestas:

242

Para solucionar esto, agregue la opción curl -H 'Content-Type: application/json'


Este error se debe a la estricta comprobación de tipo de contenido introducida en ElasticSearch 6.0, como se explica en esta publicación

A partir de Elasticsearch 6.0, todas las solicitudes REST que incluyen un cuerpo también deben proporcionar el tipo de contenido correcto para ese cuerpo.

kgf3JfUtW
fuente
Hola @sam, ¿hay alguna solución permanente para que no tenga que dar este indicador para cada solicitud?
Rupesh
1
@sam, gracias Sam, sin embargo, cuando agrego la opción curl, me da {"error": "El encabezado Content-Type [application / x-www-form-urlencoded] no es compatible", "status": 406} curl: (6) No se pudo resolver el host: aplicación
haneul kim
2
@haneulkim Si ejecuta curl en Windows, debe usar comillas dobles en lugar de comillas simples. Aquí hay un ejemplo del comando curl en Windows: curl -X PUT "localhost: 9200 / customer / _doc / 1? Pretty" -H "Content-Type: application / json" -d "{\" name \ ": \" John Doe \ "}"
Kevin Le
11

La solución es agregar Content-Type: application/jsonencabezado

curl -XPUT 'localhost:9200/_template/template_1' \
  -H 'Content-Type: application/json' \
  -d '**your query**'
Z.LI
fuente
-1
"{ \"name\": { \"first\": {} }, \"address\": [ { \"address1\":\"lane\" } ] } "

En Windows, cuando asigna JSON como parámetro, use solo comillas dobles. Usa el personaje de escape.

charlie9526
fuente