This page guides you through the installation process of the Python client, shows you how to initialize the client, and how to perform basic {es} operations with it.
See the Python client documentation for more detailed usage instructions.
Note
|
The same client is used for {es3}, on-premise and managed Elasticsearch. Some API endpoints are however not available in {es3}. |
-
Python 3.9 or higher
Find the full documentation for the Python client on readthedocs.
You can install the Python client with the following commands:
python -m pip install elasticsearch
Initialize the client using your API key and {es} endpoint:
from elasticsearch import Elasticsearch
client = Elasticsearch(
"https://...", # Your project's Elasticsearch endpoint
api_key='api-key', # API key for your project
)
To get API keys for the {es} endpoint for a project, see [elasticsearch-get-started].
After you’ve initialized the client, you can start ingesting documents. You can use
the bulk
API for this. This API enables you to index, update, and delete several
documents in one request.
You can call the bulk
API with a body parameter, an array of hashes that
define the action, and a document.
The following is an example of indexing some classic books into the books
index:
from datetime import datetime
client.bulk(
body=[
{"index": {"_index": "books", "_id": "1"}},
{"title": "Infinite Jest", "author": "David Foster Wallace", "published_on": datetime(1996, 2, 1)},
{"index": {"_index": "books", "_id": "2"}},
{"title": "Ulysses", "author": "James Joyce", "published_on": datetime(1922, 2, 2)},
{"index": {"_index": "books", "_id": "3"}},
{"title": "Just Kids", "author": "Patti Smith", "published_on": datetime(2010, 1, 19)},
],
)
You can get documents by using the following code:
response = client.get(index="books", id="1")
print(response.body)
Now that some data is available, you can search your documents using the
search
API:
response = client.search(index="books", query={
"match": {
"title": "infinite"
}
})
for hit in response["hits"]["hits"]:
print(hit["_source"])
You can call the update
API to update a document:
client.update(index="books", id="2", doc={
"author": "James Augustine Aloysius Joyce",
"pages": 732,
})
You can call the delete
API to delete a document:
client.delete(index="books", id="3")
client.indices.delete(index="books")