Заголовок Content-Type [application / x-www-form-urlencoded] не поддерживается в Elasticsearch.

135

Раньше у меня был ElasticSearch 5.2, а сейчас я обновился до 6.0.

Я пытаюсь создать шаблон индекса, следуя руководству здесь , но получаю ошибку

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

Мой запрос

curl -X PUT localhost:9200/_template/template_1 -d '
{
  "index_patterns": ["te*", "bar*"],
  "mappings": {
    "type1": {
      "properties": {
        "host_name": {
          "type": "keyword"
        }
      }
    }
  }
}'
Барри Лейшман
источник

Ответы:

244

Чтобы исправить это, добавьте параметр завитка -H 'Content-Type: application/json'


Эта ошибка возникает из-за строгой проверки типа содержимого, представленной в ElasticSearch 6.0, как описано в этом сообщении.

Начиная с Elasticsearch 6.0, все запросы REST, включающие тело, также должны предоставлять правильный тип содержимого для этого тела.

kgf3JfUtW
источник
Привет @sam! Есть ли постоянное решение, чтобы мне не приходилось указывать этот флаг для каждого запроса.
Rupesh
1
@sam благодарит Сэма, однако, когда я добавляю параметр curl, я получаю {"error": "Content-Type header [application / x-www-form-urlencoded] не поддерживается", "status": 406} curl: (6) Не удалось разрешить host: application
haneul kim
2
@haneulkim Если вы запускаете curl в Windows, вам нужно использовать двойные кавычки вместо одинарных. Вот пример команды curl в Windows: curl -X PUT "localhost: 9200 / customer / _doc / 1? Pretty" -H "Content-Type: application / json" -d "{\" name \ ": \" John Doe \ "}"
Кевин Ле
11

Решение - добавить Content-Type: application/jsonзаголовок

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

В Windows, когда вы указываете JSON в качестве параметра, используйте только двойные кавычки. Используйте escape-символ.

charlie9526
источник