diff --git a/docs/index.rst b/docs/index.rst index d196dad3..e0b35058 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -292,6 +292,29 @@ the `requests-aws4auth`_ package:: .. _requests-aws4auth: https://pypi.python.org/pypi/requests-aws4auth +Customization +------------- + +Custom serializers +~~~~~~~~~~~~~~~~~~ + +By default, `JSONSerializer`_ is used to encode all outgoing requests. +However, you can implement your own custom serializer:: + + from elasticsearch.serializer import JSONSerializer + + class SetEncoder(JSONSerializer): + def default(self, obj): + if isinstance(obj, set): + return list(obj) + if isinstance(obj, Something): + return 'CustomSomethingRepresentation' + return JSONSerializer.default(self, obj) + + es = Elasticsearch(serializer=SetEncoder()) + +.. _JSONSerializer: https://github.com/elastic/elasticsearch-py/blob/master/elasticsearch/serializer.py#L24 + Contents -------- diff --git a/elasticsearch/client/__init__.py b/elasticsearch/client/__init__.py index 00b33c20..37a516ae 100644 --- a/elasticsearch/client/__init__.py +++ b/elasticsearch/client/__init__.py @@ -150,6 +150,23 @@ class Elasticsearch(object): ], verify_certs=True ) + + By default, `JSONSerializer + `_ + is used to encode all outgoing requests. + However, you can implement your own custom serializer:: + + from elasticsearch.serializer import JSONSerializer + + class SetEncoder(JSONSerializer): + def default(self, obj): + if isinstance(obj, set): + return list(obj) + if isinstance(obj, Something): + return 'CustomSomethingRepresentation' + return JSONSerializer.default(self, obj) + + es = Elasticsearch(serializer=SetEncoder()) """ def __init__(self, hosts=None, transport_class=Transport, **kwargs):