1
- Python Elasticsearch Client
1
+ .. raw :: html
2
+
3
+ <img align =" right" width =" auto" height =" auto" src =" https://www.elastic.co/static-res/images/elastic-logo-200.png" >
4
+
5
+
6
+ Elasticsearch Python Client
2
7
===========================
3
8
4
9
.. image :: https://img.shields.io/pypi/v/elasticsearch
5
10
:target: https://pypi.org/project/elasticsearch
6
11
12
+ .. image :: https://img.shields.io/conda/vn/conda-forge/elasticsearch?color=blue
13
+ :target: https://anaconda.org/conda-forge/elasticsearch
14
+
7
15
.. image :: https://pepy.tech/badge/elasticsearch
8
16
:target: https://pepy.tech/project/elasticsearch?versions=*
9
17
@@ -13,9 +21,23 @@ Python Elasticsearch Client
13
21
.. image :: https://readthedocs.org/projects/elasticsearch-py/badge/?version=latest&style=flat
14
22
:target: https://elasticsearch-py.readthedocs.io
15
23
16
- Official low-level client for Elasticsearch. Its goal is to provide common
17
- ground for all Elasticsearch-related code in Python; because of this it tries
18
- to be opinion-free and very extendable.
24
+ *The official Python client for Elasticsearch. *
25
+
26
+
27
+ Features
28
+ --------
29
+
30
+ * Translating basic Python data types to and from JSON
31
+ * Configurable automatic discovery of cluster nodes
32
+ * Persistent connections
33
+ * Load balancing (with pluggable selection strategy) across available nodes
34
+ * Failed connection penalization (time based - failed connections won't be
35
+ retried until a timeout is reached)
36
+ * Support for TLS and HTTP authentication
37
+ * Thread safety across requests
38
+ * Pluggable architecture
39
+ * Helper functions for idiomatically using APIs together
40
+
19
41
20
42
Installation
21
43
------------
@@ -37,101 +59,52 @@ Compatibility
37
59
-------------
38
60
39
61
Language clients are forward compatible; meaning that clients support communicating
40
- with greater minor versions of Elasticsearch.
41
-
42
- Elastic language clients are also backwards compatible with lesser supported
43
- minor Elasticsearch versions.
62
+ with greater minor versions of Elasticsearch. Elastic language clients are also backwards
63
+ compatible with lesser supported minor Elasticsearch versions.
44
64
45
65
If you have a need to have multiple versions installed at the same time older
46
66
versions are also released as ``elasticsearch2 `` and ``elasticsearch5 ``.
47
67
48
68
49
- Example use
50
- -----------
51
-
52
- .. code-block :: python
53
-
54
- >> > from datetime import datetime
55
- >> > from elasticsearch import Elasticsearch
56
-
57
- # by default we connect to localhost:9200
58
- >> > es = Elasticsearch()
59
-
60
- # create an index in elasticsearch, ignore status code 400 (index already exists)
61
- >> > es.indices.create(index = ' my-index' , ignore = 400 )
62
- {' acknowledged' : True , ' shards_acknowledged' : True , ' index' : ' my-index' }
63
-
64
- # datetimes will be serialized
65
- >> > es.index(index = " my-index" , id = 42 , body = {" any" : " data" , " timestamp" : datetime.now()})
66
- {' _index' : ' my-index' ,
67
- ' _type' : ' _doc' ,
68
- ' _id' : ' 42' ,
69
- ' _version' : 1 ,
70
- ' result' : ' created' ,
71
- ' _shards' : {' total' : 2 , ' successful' : 1 , ' failed' : 0 },
72
- ' _seq_no' : 0 ,
73
- ' _primary_term' : 1 }
74
-
75
- # but not deserialized
76
- >> > es.get(index = " my-index" , id = 42 )[' _source' ]
77
- {' any' : ' data' , ' timestamp' : ' 2019-05-17T17:28:10.329598' }
69
+ Documentation
70
+ -------------
78
71
79
- Elastic Cloud ( and SSL) use-case:
72
+ Documentation for the client is ` available on elastic.co `_ and ` Read the Docs `_.
80
73
81
- .. code-block :: python
82
-
83
- >> > from elasticsearch import Elasticsearch
84
- >> > es = Elasticsearch(cloud_id = " <some_long_cloud_id>" , http_auth = (' elastic' ,' yourpassword' ))
85
- >> > es.info()
74
+ .. _available on elastic.co : https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/index.html
75
+ .. _Read the Docs : https://elasticsearch-py.readthedocs.io
86
76
87
- Using SSL Context with a self-signed cert use-case:
77
+ Quick Start
78
+ -----------
88
79
89
80
.. code-block :: python
90
81
82
+ # Import the client from the 'elasticsearch' module
91
83
>> > from elasticsearch import Elasticsearch
92
- >> > from ssl import create_default_context
93
-
94
- >> > context = create_default_context(cafile = " path/to/cafile.pem" )
95
- >> > es = Elasticsearch(" https://elasticsearch.url:port" , ssl_context = context, http_auth = (' elastic' ,' yourpassword' ))
96
- >> > es.info()
97
-
98
-
99
- Features
100
- --------
101
-
102
- The client's features include:
103
-
104
- * translating basic Python data types to and from json (datetimes are not
105
- decoded for performance reasons)
106
- * configurable automatic discovery of cluster nodes
107
- * persistent connections
108
- * load balancing (with pluggable selection strategy) across all available nodes
109
- * failed connection penalization (time based - failed connections won't be
110
- retried until a timeout is reached)
111
- * support for ssl and http authentication
112
- * thread safety
113
- * pluggable architecture
114
-
115
-
116
- Elasticsearch-DSL
117
- -----------------
118
-
119
- For a more high level client library with more limited scope, have a look at
120
- `elasticsearch-dsl `_ - a more pythonic library sitting on top of
121
- ``elasticsearch-py ``.
122
-
123
- `elasticsearch-dsl `_ provides a more convenient and idiomatic way to write and manipulate
124
- `queries `_ by mirroring the terminology and structure of Elasticsearch JSON DSL
125
- while exposing the whole range of the DSL from Python
126
- either directly using defined classes or a queryset-like expressions.
127
-
128
- It also provides an optional `persistence layer `_ for working with documents as
129
- Python objects in an ORM-like fashion: defining mappings, retrieving and saving
130
- documents, wrapping the document data in user-defined classes.
131
-
132
- .. _elasticsearch-dsl : https://elasticsearch-dsl.readthedocs.io/
133
- .. _queries : https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html
134
- .. _persistence layer : https://elasticsearch-dsl.readthedocs.io/en/latest/persistence.html#doctype
84
+
85
+ # Instantiate a client instance
86
+ >> > client = Elasticsearch(" http://localhost:9200" )
87
+
88
+ # Call an API, in this example `info()`
89
+ >> > resp = client.info()
90
+
91
+ # View the result
92
+ >> > resp
93
+ {
94
+ " name" : " instance-name" ,
95
+ " cluster_name" : " cluster-name" ,
96
+ " cluster_uuid" : " cluster-uuid" ,
97
+ " version" : {
98
+ " number" : " 7.14.0" ,
99
+ ...
100
+ },
101
+ " tagline" : " You know, for Search"
102
+ }
103
+
104
+
105
+ You can read more about `configuring the client `_ in the documentation.
106
+
107
+ .. _configuring the client : https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/connecting.html
135
108
136
109
137
110
License
0 commit comments