Skip to content

Implementation of custom headers for attachment processor with CBOR #2774

Open
@SkowRon96

Description

@SkowRon96

Referring to the elasticsearch (https://www.elastic.co/guide/en/elasticsearch/reference/current/attachment.html#attachment-cbor) documentation, it is possible to create documents with attachments based on CBOR data. However, it is necessary to pass the header {'content-type': 'application/cbor'} - as in the example from the documentation:

import cbor2
import requests

file = 'my-file'
**headers = {'content-type': 'application/cbor'}**

with open(file, 'rb') as f:
  doc = {
    'data': f.read()
  }
  requests.put(
    'http://localhost:9200/my-index-000001/_doc/my_id?pipeline=cbor-attachment',
    data=cbor2.dumps(doc),
    **headers=headers**
  )

However, the Python elasticsearch client's methods for indexing documents have pre-defined headers (code snippet from the index method below), which makes it impossible to transfer our own headers to those necessary for CBOR. I would like to mention that in python elasticsearch 7 versions it was possible to pass this header.

    def index(
        ...
        __body = document if document is not None else body
        **__headers = {"accept": "application/json", "content-type": "application/json"}**
        return self.perform_request(  # type: ignore[return-value]
            __method,
            __path,
            params=__query,
            **headers=__headers,**
            body=__body,
            endpoint_id="index",
            path_parts=__path_parts,
        )

Python 3.13.1
elasticsearch 8.17.1

Is it possible to restore custom headers in the current version?
However, if this is not possible, I would like to ask for a solution that allows the execution of the given action using the elasticsearch python client.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions