Skip to content
A lightweight and easy to use Python client for ElasticSearch
Python Shell
Find file
Pull request Compare This branch is 1 commit ahead, 54 commits behind eriky:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



ESClient is a Python library that uses the ElasticSearch REST API. It is meant to be lightweight and be close to the actual REST API in terms of usage.



To install:

python install

You can also install ESClient with easy_install or pip. The following commands will install the latest released version of ESClient:

$ easy_install esclient

Or with pip:

$ pip install esclient


Please take a look at the file for usage examples. This code at least covers all the API methods that are implemented. As soon as the API reaches stability I will put more time into writing decent documentation. I advice you to keep the ElasticSearch documentation at hand when you start using this library. The documentation strings in the code should be very useful.

Unit tests can be used for unit testing. You can directly run this file if you have an ElasticSearch instance running on localhost.

Bug Tracker and Issues

If you find a bug or any other issue you may create an issue on GitHub!


My target is to reach a stable 1.0 release in the coming months. Currently on the roadmap to reach a 1.0 release are:

  • Implementing most or even all the API methods
  • Implementing bulk indexing

You may have noticed this software is labeled as alpha quality. I will not remove this label until I have done extensive testing and am convinced that most errors are handled cleanly. For normal usage this software works pretty well so don't be too frightened of the alpha label!


Licensed under the New BSD License. See also the LICENSE file


This client library was written by Erik-Jan van Baaren (

The style of this library is inspired by pyelasticsearch.


  • ESClient uses the excellent requests library.
  • The unit tests only work on Python 2.7 (one test will fail on 2.6)
  • The code is tested mostly on Python 2.6 and 2.7



  • Added API method: index_exists


  • Better error handling (by using _parse_json_response() method everywhere)
  • Added API methods: get_mapping, put_mapping


  • Added API methods: status, flush
  • some code improvements / beautifying


  • Removed option to choose between JSON or hierachy of Python objects. It would have created too much hassle.
  • Added API methods: mget, open+close index, create_alias, delete_alias
  • small fixes here and there


  • Added docstring to the get API
  • made sure that removes old MANIFEST file before making new package
  • fixed version string in


From now on I will conform to the Semantic Versioning Guidelines outlined on this site: In that spirit, I bumped the minor version to 0.1.0 and will keep doing so until public API stability is reached.


First official release that was published to PyPI. Alpha quality, but with working unit tests for each API method.

Something went wrong with that request. Please try again.