olivere / elastic

Deprecated: Use the official Elasticsearch client for Go at https://github.com/elastic/go-elasticsearch
https://olivere.github.io/elastic/
MIT License
7.42k stars 1.15k forks source link

Can't use REST compatibility headers #1676

Open carlware opened 1 year ago

carlware commented 1 year ago

The compatibility headers cannot be used with the client

Accept: "application/vnd.elasticsearch+json;compatible-with=7"
Content-Type: "application/vnd.elasticsearch+json;compatible-with=7"

I tried to set the headers like this

elastic.SetHeaders(http.Header{
    "Accept": {
        "application/vnd.elasticsearch+json",
        "compatible-with=7",
    },
    "Content-Type": {
        "application/vnd.elasticsearch+json",
        "compatible-with=7",
    },
})

but the the PerformRequest doesn't honor the Content-Type header, in several places in request.go that header is set explicitly to application/json https://github.com/olivere/elastic/blob/release-branch.v7/request.go#L27 https://github.com/olivere/elastic/blob/release-branch.v7/request.go#L59

Any request to Elasticsearch will fail because the Content-Type doesn't have the compatible-with option set.

Which version of Elastic are you using?

[*] elastic.v7 (for Elasticsearch 7.x) [ ] elastic.v6 (for Elasticsearch 6.x) [ ] elastic.v5 (for Elasticsearch 5.x) [ ] elastic.v3 (for Elasticsearch 2.x) [ ] elastic.v2 (for Elasticsearch 1.x)