Skip to content

Manticore transport unable to send custom headers with perform_request #66

Closed
@kaisecheng

Description

@kaisecheng

elasticsearch-transport gem is unable to send custom headers client.search(q: '*', size: 2, headers: {"Elastic-Api-Version"=>"2023-10-31"}) in Manticore implementation probably since 7.2.

The headers are ignored and overwritten by the initial constructor headers.
Faraday and curb do merge with input headers, hence exclude in this bug

Reproduce steps

Test it against serverless endpoint which should return 400 when the header is not "Elastic-Api-Version"=>"2023-10-31"

require "elasticsearch"
require "elasticsearch/transport/transport/http/manticore"

client = Elasticsearch::Client.new(
    {
        :hosts=>["https://YOUR_SERVERLESS_ENDPOINT:443"], 
        :transport_options=>
            {
                :headers=>{
                    "Authorization"=>"Basic YOUR_TOKEN",
                    "Elastic-Api-Version"=>"2023-10-31"
                }, 
                :request_timeout=>60, 
                :connect_timeout=>10, 
                :socket_timeout=>60
            }, 
        :transport_class=>Elasticsearch::Transport::Transport::HTTP::Manticore, 
        :ssl=>{:ssl=>true, :verify=>:default, :trust_strategy=>nil}
    })

# expect 200
puts client.info

# expect 400 but get 200
puts client.search(q: '*', size: 2, headers: {"Elastic-Api-Version"=>"2024-10-31"})

The last line is expected to get 400 but got 200 because the headers didn't send. You can initialize the Elasticsearch::Clientwith the wrong header "2024-10-31", the server returns 400.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions