231 lines
8.2 KiB
Plaintext
Executable File
231 lines
8.2 KiB
Plaintext
Executable File
Metadata-Version: 2.1
|
|
Name: elasticsearch
|
|
Version: 7.12.1
|
|
Summary: Python client for Elasticsearch
|
|
Home-page: https://github.com/elastic/elasticsearch-py
|
|
Author: Honza Král, Nick Lang
|
|
Author-email: honza.kral@gmail.com, nick@nicklang.com
|
|
Maintainer: Seth Michael Larson
|
|
Maintainer-email: seth.larson@elastic.co
|
|
License: Apache-2.0
|
|
Project-URL: Documentation, https://elasticsearch-py.readthedocs.io
|
|
Project-URL: Source Code, https://github.com/elastic/elasticsearch-py
|
|
Project-URL: Issue Tracker, https://github.com/elastic/elasticsearch-py/issues
|
|
Platform: UNKNOWN
|
|
Classifier: Development Status :: 5 - Production/Stable
|
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
Classifier: Intended Audience :: Developers
|
|
Classifier: Operating System :: OS Independent
|
|
Classifier: Programming Language :: Python
|
|
Classifier: Programming Language :: Python :: 2
|
|
Classifier: Programming Language :: Python :: 2.7
|
|
Classifier: Programming Language :: Python :: 3
|
|
Classifier: Programming Language :: Python :: 3.4
|
|
Classifier: Programming Language :: Python :: 3.5
|
|
Classifier: Programming Language :: Python :: 3.6
|
|
Classifier: Programming Language :: Python :: 3.7
|
|
Classifier: Programming Language :: Python :: 3.8
|
|
Classifier: Programming Language :: Python :: 3.9
|
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
|
|
Description-Content-Type: text/x-rst
|
|
Requires-Dist: urllib3 (<2,>=1.21.1)
|
|
Requires-Dist: certifi
|
|
Provides-Extra: async
|
|
Requires-Dist: aiohttp (<4,>=3) ; extra == 'async'
|
|
Provides-Extra: develop
|
|
Requires-Dist: requests (<3.0.0,>=2.0.0) ; extra == 'develop'
|
|
Requires-Dist: coverage ; extra == 'develop'
|
|
Requires-Dist: mock ; extra == 'develop'
|
|
Requires-Dist: pyyaml ; extra == 'develop'
|
|
Requires-Dist: pytest ; extra == 'develop'
|
|
Requires-Dist: pytest-cov ; extra == 'develop'
|
|
Requires-Dist: sphinx (<1.7) ; extra == 'develop'
|
|
Requires-Dist: sphinx-rtd-theme ; extra == 'develop'
|
|
Requires-Dist: black ; extra == 'develop'
|
|
Requires-Dist: jinja2 ; extra == 'develop'
|
|
Provides-Extra: docs
|
|
Requires-Dist: sphinx (<1.7) ; extra == 'docs'
|
|
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
|
|
Provides-Extra: requests
|
|
Requires-Dist: requests (<3.0.0,>=2.4.0) ; extra == 'requests'
|
|
|
|
Python Elasticsearch Client
|
|
===========================
|
|
|
|
.. image:: https://img.shields.io/pypi/v/elasticsearch
|
|
:target: https://pypi.org/project/elasticsearch
|
|
|
|
.. image:: https://pepy.tech/badge/elasticsearch
|
|
:target: https://pepy.tech/project/elasticsearch?versions=*
|
|
|
|
.. image:: https://clients-ci.elastic.co/job/elastic+elasticsearch-py+master/badge/icon
|
|
:target: https://clients-ci.elastic.co/job/elastic+elasticsearch-py+master
|
|
|
|
.. image:: https://readthedocs.org/projects/elasticsearch-py/badge/?version=latest&style=flat
|
|
:target: https://elasticsearch-py.readthedocs.io
|
|
|
|
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.
|
|
|
|
Installation
|
|
------------
|
|
|
|
Install the ``elasticsearch`` package with `pip
|
|
<https://pypi.org/project/elasticsearch>`_::
|
|
|
|
$ python -m pip install elasticsearch
|
|
|
|
If your application uses async/await in Python you can install with
|
|
the ``async`` extra::
|
|
|
|
$ python -m pip install elasticsearch[async]
|
|
|
|
Read more about `how to use asyncio with this project <https://elasticsearch-py.readthedocs.io/en/master/async.html>`_.
|
|
|
|
|
|
Compatibility
|
|
-------------
|
|
|
|
The library is compatible with all Elasticsearch versions since ``0.90.x`` but you
|
|
**have to use a matching major version**:
|
|
|
|
For **Elasticsearch 7.0** and later, use the major version 7 (``7.x.y``) of the
|
|
library.
|
|
|
|
For **Elasticsearch 6.0** and later, use the major version 6 (``6.x.y``) of the
|
|
library.
|
|
|
|
For **Elasticsearch 5.0** and later, use the major version 5 (``5.x.y``) of the
|
|
library.
|
|
|
|
For **Elasticsearch 2.0** and later, use the major version 2 (``2.x.y``) of the
|
|
library, and so on.
|
|
|
|
The recommended way to set your requirements in your `setup.py` or
|
|
`requirements.txt` is::
|
|
|
|
# Elasticsearch 7.x
|
|
elasticsearch>=7.0.0,<8.0.0
|
|
|
|
# Elasticsearch 6.x
|
|
elasticsearch>=6.0.0,<7.0.0
|
|
|
|
# Elasticsearch 5.x
|
|
elasticsearch>=5.0.0,<6.0.0
|
|
|
|
# Elasticsearch 2.x
|
|
elasticsearch>=2.0.0,<3.0.0
|
|
|
|
If you have a need to have multiple versions installed at the same time older
|
|
versions are also released as ``elasticsearch2`` and ``elasticsearch5``.
|
|
|
|
|
|
Example use
|
|
-----------
|
|
|
|
.. code-block:: python
|
|
|
|
>>> from datetime import datetime
|
|
>>> from elasticsearch import Elasticsearch
|
|
|
|
# by default we connect to localhost:9200
|
|
>>> es = Elasticsearch()
|
|
|
|
# create an index in elasticsearch, ignore status code 400 (index already exists)
|
|
>>> es.indices.create(index='my-index', ignore=400)
|
|
{'acknowledged': True, 'shards_acknowledged': True, 'index': 'my-index'}
|
|
|
|
# datetimes will be serialized
|
|
>>> es.index(index="my-index", id=42, body={"any": "data", "timestamp": datetime.now()})
|
|
{'_index': 'my-index',
|
|
'_type': '_doc',
|
|
'_id': '42',
|
|
'_version': 1,
|
|
'result': 'created',
|
|
'_shards': {'total': 2, 'successful': 1, 'failed': 0},
|
|
'_seq_no': 0,
|
|
'_primary_term': 1}
|
|
|
|
# but not deserialized
|
|
>>> es.get(index="my-index", id=42)['_source']
|
|
{'any': 'data', 'timestamp': '2019-05-17T17:28:10.329598'}
|
|
|
|
Elastic Cloud (and SSL) use-case:
|
|
|
|
.. code-block:: python
|
|
|
|
>>> from elasticsearch import Elasticsearch
|
|
>>> es = Elasticsearch(cloud_id="<some_long_cloud_id>", http_auth=('elastic','yourpassword'))
|
|
>>> es.info()
|
|
|
|
Using SSL Context with a self-signed cert use-case:
|
|
|
|
.. code-block:: python
|
|
|
|
>>> from elasticsearch import Elasticsearch
|
|
>>> from ssl import create_default_context
|
|
|
|
>>> context = create_default_context(cafile="path/to/cafile.pem")
|
|
>>> es = Elasticsearch("https://elasticsearch.url:port", ssl_context=context, http_auth=('elastic','yourpassword'))
|
|
>>> es.info()
|
|
|
|
|
|
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)
|
|
* support for ssl and http authentication
|
|
* thread safety
|
|
* pluggable architecture
|
|
|
|
|
|
Elasticsearch-DSL
|
|
-----------------
|
|
|
|
For a more high level client library with more limited scope, have a look at
|
|
`elasticsearch-dsl`_ - a more pythonic library sitting on top of
|
|
``elasticsearch-py``.
|
|
|
|
`elasticsearch-dsl`_ provides a more convenient and idiomatic way to write and manipulate
|
|
`queries`_ by mirroring the terminology and structure of Elasticsearch JSON DSL
|
|
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 `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.
|
|
|
|
.. _elasticsearch-dsl: https://elasticsearch-dsl.readthedocs.io/
|
|
.. _queries: https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html
|
|
.. _persistence layer: https://elasticsearch-dsl.readthedocs.io/en/latest/persistence.html#doctype
|
|
|
|
|
|
License
|
|
-------
|
|
|
|
Copyright 2020 Elasticsearch B.V
|
|
|
|
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.
|
|
|