{"error": "заголовок Content-Type [] не поддерживается", "status": 406} при вставке данных в Elasticsearch с Golang - PullRequest
0 голосов
/ 15 ноября 2018

Кто-нибудь знает, как исправить эту ошибку?

Я использую Golang для вставки данных вasticsearch, но, похоже, данные не вставлены из-за этой ошибки.

{"error": "заголовок Content-Type [] не поддерживается", "status": 406}

Я уже установил тип контента. Обратите внимание, что я использую эластичный поиск 6.4.3

request, err := http.NewRequest("POST", urlSearch, bytes.NewBuffer(query))
            request.Close = true
            request.Header.Set("Content-Type", "application/json")

И последнее, но не менее важное: я использую пакет elastigo для отправки запросов наasticsearch.

1 Ответ

0 голосов
/ 15 ноября 2018

Это странный ответ, так как предполагает, что эта строка:

request.Header.Set("Content-Type", "application/json")

Не удалось добавить значение в срез ключа.В современном го этого не происходит, например,

data := []byte(`{"a":1}`)
req, err := http.NewRequest("POST", "", bytes.NewBuffer(data))
if err != nil {
    fmt.Println(err)
    return
}
req.Header.Set("Foo", "Bar")
fmt.Printf("%v\n", req.Header)

Отпечатки

map[Foo:[Bar]]

См. игровая площадка .

Используете ли вы более старую версиюИди, что не соответствует этому поведению?(Я нахожусь на 1.11.2 локально.)

Пять предложений:

(1) Обработайте возвращаемое значение err из NewRequest, чтобы убедиться, что там нет проблем (см. Пример выше).

(2) Напечатайте значение запроса Header перед отправкой, чтобы убедиться, что оно выглядит именно в этой точке (см. Пример выше).

(3) Попробуйте метод Add для заголовка Content-Type вместо Set в качестве альтернативы:

func (h Header) Add(key, value string)

(4) Убедитесь, что вы не проходите через прокси, который удаляет значения заголовка.

(5) Убедитесь, что «application / json» является приемлемым типом контента для конечной точки, к которой вы обращаетесь, поскольку пустое значение в ответе об ошибке само по себе может быть ошибочным.

Удачи!

...