2023-07-24 12:23:51 -05:00
- [OpenSearch Python Client User Guide ](#opensearch-python-client-user-guide )
2022-04-05 14:06:54 -07:00
- [Setup ](#setup )
2023-07-24 12:23:51 -05:00
- [Basic Features ](#basic-features )
- [Creating a Client ](#creating-a-client )
- [Creating an Index ](#creating-an-index )
- [Adding a Document to an Index ](#adding-a-document-to-an-index )
- [Searching for a Document ](#searching-for-a-document )
- [Deleting a Document ](#deleting-a-document )
- [Deleting an Index ](#deleting-an-index )
- [Advanced Features ](#advanced-features )
- [Plugins ](#plugins )
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
# OpenSearch Python Client User Guide
2022-04-05 14:06:54 -07:00
## Setup
To add the client to your project, install it using [pip ](https://pip.pypa.io/ ):
```bash
pip install opensearch-py
```
Then import it like any other module:
```python
from opensearchpy import OpenSearch
```
2023-07-24 12:23:51 -05:00
For better performance we recommend the async client. To add the async client to your project, install it using [pip ](https://pip.pypa.io/ ):
2023-03-28 10:21:07 -07:00
```bash
pip install opensearch-py[ async]
```
2023-07-24 12:23:51 -05:00
In general, we recommend using a package manager, such as [poetry ](https://python-poetry.org/docs/ ), for your projects. This is the package manager used for [samples ](samples ).
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
## Basic Features
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
In the example below, we create a client, create an index with non-default settings, insert a
document into the index, search for the document, delete the document, and finally delete the index.
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
You can find working versions of the code below that can be run with a local instance of OpenSearch in [samples ](samples ).
### Creating a Client
2022-08-26 16:45:36 -07:00
2022-04-05 14:06:54 -07:00
```python
from opensearchpy import OpenSearch
host = 'localhost'
port = 9200
auth = ( 'admin' , 'admin' ) # For testing only. Don't store credentials in code.
2022-11-22 11:33:45 -05:00
2022-04-05 14:06:54 -07:00
client = OpenSearch (
hosts = [{ 'host' : host , 'port' : port }],
http_auth = auth ,
use_ssl = True ,
2023-07-24 12:23:51 -05:00
verify_certs = False
2022-04-05 14:06:54 -07:00
)
2023-07-24 12:23:51 -05:00
info = client . info ()
print ( f "Welcome to { info [ 'version' ][ 'distribution' ] } { info [ 'version' ][ 'number' ] } !" )
2022-08-26 16:45:36 -07:00
```
2023-07-24 12:23:51 -05:00
See [hello.py ](samples/hello/hello.py ) for a working sample, and [guides/ssl ](guides/ssl.md ) for how to setup SSL certificates.
### Creating an Index
2022-08-26 16:45:36 -07:00
```python
2023-07-24 12:23:51 -05:00
index_name = 'test-index'
2022-04-05 14:06:54 -07:00
index_body = {
'settings' : {
'index' : {
'number_of_shards' : 4
}
}
}
2023-07-24 12:23:51 -05:00
response = client . indices . create (
index_name ,
body = index_body
)
2022-04-05 14:06:54 -07:00
print ( response )
2022-08-26 16:45:36 -07:00
```
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
### Adding a Document to an Index
2022-08-26 16:45:36 -07:00
```python
2022-04-05 14:06:54 -07:00
document = {
'title' : 'Moneyball' ,
'director' : 'Bennett Miller' ,
'year' : '2011'
}
2023-07-24 12:23:51 -05:00
2022-04-05 14:06:54 -07:00
id = '1'
response = client . index (
index = index_name ,
body = document ,
id = id ,
refresh = True
)
print ( response )
2022-08-26 16:45:36 -07:00
```
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
### Searching for a Document
2022-08-26 16:45:36 -07:00
```python
2022-04-05 14:06:54 -07:00
q = 'miller'
query = {
'size' : 5 ,
'query' : {
'multi_match' : {
'query' : q ,
'fields' : [ 'title^2' , 'director' ]
}
}
}
response = client . search (
body = query ,
index = index_name
)
2023-07-24 12:23:51 -05:00
2022-04-05 14:06:54 -07:00
print ( response )
2022-08-26 16:45:36 -07:00
```
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
### Deleting a Document
2022-08-26 16:45:36 -07:00
```python
2022-04-05 14:06:54 -07:00
response = client . delete (
index = index_name ,
id = id
)
print ( response )
2022-08-26 16:45:36 -07:00
```
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
### Deleting an Index
2022-08-26 16:45:36 -07:00
```python
2022-04-05 14:06:54 -07:00
response = client . indices . delete (
index = index_name
)
2022-11-02 11:49:31 +05:30
print ( response )
```
2022-04-05 14:06:54 -07:00
2023-07-24 12:23:51 -05:00
## Advanced Features
- [Authentication (IAM, SigV4) ](guides/auth.md )
- [Configuring SSL ](guides/ssl.md )
- [Bulk Indexing ](guides/bulk.md )
- [High Level DSL ](guides/dsl.md )
- [Index Lifecycle ](guides/index_lifecycle.md )
- [Search ](guides/search.md )
- [Point in Time ](guides/point_in_time.md )
- [Using a Proxy ](guides/proxy.md )
## Plugins
- [Security ](guides/plugins/security.md )
- [Alerting ](guides/plugins/alerting.md )
- [Index Management ](guides/plugins/index_management.md )