perform_request

in lib/elastic/transport/client.rb [168:194]


      def perform_request(method, path, params = {}, body = nil, headers = nil, opts = {})
        method = @send_get_body_as if method == 'GET' && body
        validate_ca_fingerprints if @ca_fingerprint
        if @otel
          
          span_name = opts[:endpoint] || method
          @otel.tracer.in_span(span_name) do |span|
            span['http.request.method'] = method
            span['db.system'] = 'elasticsearch'
            opts[:defined_params]&.each do |k, v|
              if v.respond_to?(:join)
                span["db.elasticsearch.path_parts.#{k}"] = v.join(',')
              else
                span["db.elasticsearch.path_parts.#{k}"] = v
              end
            end
            if body_as_json = @otel.process_body(body, opts[:endpoint])
              span['db.statement'] = body_as_json
            end
            span['db.operation'] = opts[:endpoint] if opts[:endpoint]
            transport.perform_request(method, path, params || {}, body, headers)
          end
        else
          transport.perform_request(method, path, params || {}, body, headers)
        end
      end