123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- = elasticsearch-py
- == Overview
- Official low-level client for Elasticsearch. Its goal is to provide common
- ground for all Elasticsearch-related code in Python; because of this it tries
- to be opinion-free and very extendable. The full documentation is available at
- http://elasticsearch-py.rtfd.org/
- .Elasticsearch DSL
- ************************************************************************************
- For a more high level client library with more limited scope, have a look at
- http://elasticsearch-dsl.rtfd.org/[elasticsearch-dsl] - a more pythonic library
- sitting on top of `elasticsearch-py`.
- It provides a more convenient and idiomatic way to write and manipulate
- http://elasticsearch-dsl.readthedocs.org/en/latest/search_dsl.html[queries]. It
- stays close to the Elasticsearch JSON DSL, mirroring its terminology and
- structure while exposing the whole range of the DSL from Python either directly
- using defined classes or a queryset-like expressions.
- It also provides an optional
- http://elasticsearch-dsl.readthedocs.org/en/latest/persistence.html#doctype[persistence
- layer] for working with documents as Python objects in an ORM-like fashion:
- defining mappings, retrieving and saving documents, wrapping the document data
- in user-defined classes.
- ************************************************************************************
- === Installation
- It can be installed with pip:
- [source,sh]
- ------------------------------------
- pip install elasticsearch
- ------------------------------------
- === Versioning
- There are two branches for development - `master` and `1.x`. Master branch is
- used to track all the changes for Elasticsearch 2.0 and beyond whereas 1.x
- tracks Elasticsearch 1.*.
- Releases with major version 1 (1.X.Y) are to be used with Elasticsearch 1.* and
- later, 0.4 releases are meant to work with Elasticsearch 0.90.*.
- The recommended way to set your requirements in your `setup.py` or
- `requirements.txt` is:
- [source,txt]
- ------------------------------------
- # Elasticsearch 2.x
- elasticsearch>=2.0.0,<3.0.0
- # Elasticsearch 1.x
- elasticsearch>=1.0.0,<2.0.0
- ------------------------------------
- === Example use
- Simple use-case:
- [source,python]
- ------------------------------------
- >>> from datetime import datetime
- >>> from elasticsearch import Elasticsearch
- # by default we connect to localhost:9200
- >>> es = Elasticsearch()
- # datetimes will be serialized
- >>> es.index(index="my-index", doc_type="test-type", id=42, body={"any": "data", "timestamp": datetime.now()})
- {u'_id': u'42', u'_index': u'my-index', u'_type': u'test-type', u'_version': 1, u'ok': True}
- # but not deserialized
- >>> es.get(index="my-index", doc_type="test-type", id=42)['_source']
- {u'any': u'data', u'timestamp': u'2013-05-12T19:45:31.804229'}
- ------------------------------------
- [NOTE]
- All the API calls map the raw REST api as closely as possible, including
- the distinction between required and optional arguments to the calls. This
- means that the code makes distinction between positional and keyword arguments;
- we, however, recommend that people use keyword arguments for all calls for
- consistency and safety.
- === Features
- The client's features include:
- * translating basic Python data types to and from json (datetimes are not
- decoded for performance reasons)
- * configurable automatic discovery of cluster nodes
- * persistent connections
- * load balancing (with pluggable selection strategy) across all available nodes
- * failed connection penalization (time based - failed connections won't be
- retried until a timeout is reached)
- * thread safety
- * pluggable architecture
- The client also contains a convenient set of
- http://elasticsearch-py.readthedocs.org/en/master/helpers.html[helpers] for
- some of the more engaging tasks like bulk indexing and reindexing.
- === License
- Copyright 2013-2016 Elasticsearch
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
|