[7.x] Reorganize API documentation

This commit is contained in:
Seth Michael Larson
2021-04-26 10:12:40 -05:00
parent 794a97578f
commit 54a1d56870
7 changed files with 306 additions and 431 deletions
-1
View File
@@ -4,7 +4,6 @@ include CONTRIBUTING.md
include LICENSE
include MANIFEST.in
include README.rst
include README
include setup.py
recursive-include elasticsearch* py.typed *.pyi
recursive-include docs/sphinx *
-176
View File
@@ -1,176 +0,0 @@
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.
-1
View File
@@ -1 +0,0 @@
README
+164
View File
@@ -0,0 +1,164 @@
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 2021 Elasticsearch B.V. Licensed under the Apache License, Version 2.0.
+140 -8
View File
@@ -115,12 +115,24 @@ Async Search
.. autoclass:: AsyncSearchClient
:members:
Autoscaling
-----------
.. autoclass:: AutoscalingClient
:members:
Cat
---
.. autoclass:: CatClient
:members:
Cross-Cluster Replication (CCR)
-------------------------------
.. autoclass:: CcrClient
:members:
Cluster
-------
@@ -133,44 +145,164 @@ Dangling Indices
.. autoclass:: DanglingIndicesClient
:members:
Features
--------
Enrich Policies
---------------
.. autoclass:: EnrichClient
:members:
Event Query Language (EQL)
--------------------------
.. autoclass:: EqlClient
:members:
Snapshottable Features
----------------------
.. autoclass:: FeaturesClient
:members:
Fleet
-----
.. autoclass:: FleetClient
:members:
Graph Explore
-------------
.. autoclass:: GraphClient
:members:
Index Lifecycle Management (ILM)
--------------------------------
.. autoclass:: IlmClient
:members:
Indices
-------
.. autoclass:: IndicesClient
:members:
Ingest
------
Ingest Pipelines
----------------
.. autoclass:: IngestClient
:members:
License
-------
.. autoclass:: LicenseClient
:members:
Logstash
--------
.. autoclass:: LogstashClient
:members:
Migration
---------
.. autoclass:: MigrationClient
:members:
Machine Learning (ML)
---------------------
.. autoclass:: MlClient
:members:
Monitoring
----------
.. autoclass:: MonitoringClient
:members:
Nodes
-----
.. autoclass:: NodesClient
:members:
Remote
------
Rollup Indices
--------------
.. autoclass:: RemoteClient
.. autoclass:: RollupClient
:members:
Snapshot
Searchable Snapshots
--------------------
.. autoclass:: SearchableSnapshotsClient
:members:
Security
--------
.. autoclass:: SecurityClient
:members:
Shutdown
--------
.. autoclass:: ShutdownClient
:members:
Snapshot Lifecycle Management (SLM)
-----------------------------------
.. autoclass:: SlmClient
:members:
Snapshots
---------
.. autoclass:: SnapshotClient
:members:
SQL
---
.. autoclass:: SqlClient
:members:
TLS/SSL
-------
.. autoclass:: SslClient
:members:
Tasks
-----
.. autoclass:: TasksClient
:members:
Text Structure
--------------
.. autoclass:: TextStructureClient
:members:
Transforms
----------
.. autoclass:: TransformClient
:members:
Watcher
-------
.. autoclass:: WatcherClient
:members:
X-Pack
------
.. autoclass:: XPackClient
:members:
+1 -39
View File
@@ -376,31 +376,6 @@ documents. This will configure compression.
Compression is enabled by default when connecting to Elastic Cloud via ``cloud_id``.
Running on AWS with IAM
~~~~~~~~~~~~~~~~~~~~~~~
If you want to use this client with IAM based authentication on AWS you can use
the `requests-aws4auth`_ package:
.. code-block:: python
from elasticsearch import Elasticsearch, RequestsHttpConnection
from requests_aws4auth import AWS4Auth
host = 'YOURHOST.us-east-1.es.amazonaws.com'
awsauth = AWS4Auth(YOUR_ACCESS_KEY, YOUR_SECRET_KEY, REGION, 'es')
es = Elasticsearch(
hosts=[{'host': host, 'port': 443}],
http_auth=awsauth,
use_ssl=True,
verify_certs=True,
connection_class=RequestsHttpConnection
)
print(es.info())
.. _requests-aws4auth: https://pypi.python.org/pypi/requests-aws4auth
Customization
-------------
@@ -455,7 +430,6 @@ Contents
:maxdepth: 2
api
xpack
exceptions
async
connection
@@ -467,19 +441,7 @@ Contents
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.
Copyright 2021 Elasticsearch B.V. Licensed under the Apache License, Version 2.0.
Indices and tables
-205
View File
@@ -1,205 +0,0 @@
.. _xpack:
X-Pack APIs
===========
X-Pack is an Elastic Stack extension that bundles security, alerting, monitoring,
reporting, and graph capabilities into one easy-to-install package.
While the X-Pack components are designed to work together seamlessly, you can
easily enable or disable the features you want to use.
.. py:module:: elasticsearch.client
X-Pack Info
-----------
`X-Pack Info API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/info-api.html>`_
provides general info about the installed X-Pack.
.. autoclass:: XPackClient
:members:
Autoscaling
-----------
`Autoscaling API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/autoscaling-apis.html>`_
is used to perform autoscaling operations.
.. autoclass:: AutoscalingClient
:members:
Cross-Cluster Replication
-------------------------
`Cross-Cluster Replication APIs <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/ccr-apis.html>`_
are used to perform cross-cluster replication operations.
.. autoclass:: CcrClient
:members:
Enrich
------
`Enrich APIs <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/enrich-apis.html>`_
can be used to add data from your existing indices to incoming documents during ingest.
.. autoclass:: EnrichClient
:members:
EQL
---
`EQL APIs <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/eql.html>`_
accept EQL to query event-based time series data, such as logs, metrics, and traces.
.. autoclass:: EqlClient
:members:
Graph Explore
-------------
`Graph Explore API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/graph-explore-api.html>`_
enables you to extract and summarize information about the documents and terms in your Elasticsearch index.
.. autoclass:: GraphClient
:members:
Index Lifecycle Management (ILM)
--------------------------------
`Index Lifecycle Management APIs <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index-lifecycle-management-api.html>`_
used to set up policies to automatically manage the index lifecycle.
.. autoclass:: IlmClient
:members:
Licensing
---------
`License APIs <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/licensing-apis.html>`_
can be used to manage your licences.
.. autoclass:: LicenseClient
:members:
Logstash
--------
`Logstash APIs <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/logstash-apis.html>`_
manage Pipelines used by Logstash Central Management.
.. autoclass:: LogstashClient
:members:
Machine Learning
----------------
`Machine Learning APIs <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/ml-apis.html>`_
can be useful for discovering new patterns about your data. For a more detailed explanation
about X-Pack's machine learning please refer to the official documentation.
.. autoclass:: MlClient
:members:
Migration
---------
`Migration API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/migration-api.html>`_
helps simplify upgrading X-Pack indices from one version to another.
.. autoclass:: MigrationClient
:members:
Monitoring
----------
`Monitoring API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/es-monitoring.html>`_
used to collect data from the Elasticsearch nodes, Logstash nodes, Kibana instances, and Beats in your cluster.
.. autoclass:: MonitoringClient
:members:
Rollup
------
`Rollup API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/rollup-apis.html>`_
enables searching through rolled-up data using the standard query DSL.
.. autoclass:: RollupClient
:members:
Searchable Snapshots
--------------------
`Searchable Snapshots API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/searchable-snapshots-apis.html>`_
used to perform searchable snapshots operations.
.. autoclass:: SearchableSnapshotsClient
:members:
Security
--------
`Security API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/security-api.html>`_
can be used to help secure your Elasticsearch cluster. Integrating with LDAP and Active Directory.
.. autoclass:: SecurityClient
:members:
Snapshot Lifecycle Management (SLM)
-----------------------------------
`Snapshot Lifecycle Management API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/snapshot-lifecycle-management-api.html>`_
can be used to set up policies to automatically take snapshots and control how long they are retained.
.. autoclass:: SlmClient
:members:
SQL
---
The `SQL REST API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/sql-rest.html>`_
accepts SQL in a JSON document, executes it, and returns the results.
.. autoclass:: SqlClient
:members:
SSL Certificate
---------------
`SSL Certificate API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/security-api-ssl.html>`_
enables you to retrieve information about the X.509 certificates that are used
to encrypt communications in your Elasticsearch cluster.
.. autoclass:: SslClient
:members:
Text Structure
--------------
`Text Structure API <https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-find-file-structure.html>`_
finds the structure of a text file. The text file must contain data that is
suitable to be ingested into Elasticsearch.
.. autoclass:: TextStructureClient
:members:
Transform
---------
`Transform API <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/transform-apis.html>`_
manages transformation operations from grabbing data from source indices, transforms it, and
saves it to a destination index.
.. autoclass:: TransformClient
:members:
Watcher
-------
`Watcher APIs <https://www.elastic.co/guide/en/elasticsearch/reference/7.x/watcher-api.html>`_
can be used to notify you when certain pre-defined thresholds have happened.
.. autoclass:: WatcherClient
:members:
+1 -1
View File
@@ -29,7 +29,7 @@ with open(join(base_dir, package_name, "_version.py")) as f:
r"__versionstr__\s+=\s+[\"\']([^\"\']+)[\"\']", f.read()
).group(1)
with open(join(base_dir, "README")) as f:
with open(join(base_dir, "README.rst")) as f:
long_description = f.read().strip()
packages = [