81 lines
2.7 KiB
Markdown
81 lines
2.7 KiB
Markdown
|
|
- [Connection Classes](#connection-classes)
|
||
|
|
- [Selecting a Connection Class](#selecting-a-connection-class)
|
||
|
|
- [Urllib3HttpConnection](#urllib3httpconnection)
|
||
|
|
- [RequestsHttpConnection](#requestshttpconnection)
|
||
|
|
- [AsyncHttpConnection](#asynchttpconnection)
|
||
|
|
- [Connection Pooling](#connection-pooling)
|
||
|
|
|
||
|
|
# Connection Classes
|
||
|
|
|
||
|
|
The OpenSearch Python synchronous client supports both the `Urllib3HttpConnection` connection class (default) from the [urllib3](https://pypi.org/project/urllib3/) library, and `RequestsHttpConnection` from the [requests](https://pypi.org/project/requests/) library. We recommend you use the default, unless your application is standardized on `requests`.
|
||
|
|
|
||
|
|
The faster, asynchronous client, implements a class called `AsyncHttpConnection`, which uses [aiohttp](https://pypi.org/project/aiohttp/).
|
||
|
|
|
||
|
|
## Selecting a Connection Class
|
||
|
|
|
||
|
|
### Urllib3HttpConnection
|
||
|
|
|
||
|
|
```python
|
||
|
|
from opensearchpy import OpenSearch, Urllib3HttpConnection
|
||
|
|
|
||
|
|
client = OpenSearch(
|
||
|
|
hosts = [{'host': 'localhost', 'port': 9200}],
|
||
|
|
http_auth = ('admin', 'admin'),
|
||
|
|
use_ssl = True,
|
||
|
|
verify_certs = False,
|
||
|
|
ssl_show_warn = False,
|
||
|
|
connection_class = Urllib3HttpConnection
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
### RequestsHttpConnection
|
||
|
|
|
||
|
|
```python
|
||
|
|
from opensearchpy import OpenSearch, RequestsHttpConnection
|
||
|
|
|
||
|
|
client = OpenSearch(
|
||
|
|
hosts = [{'host': 'localhost', 'port': 9200}],
|
||
|
|
http_auth = ('admin', 'admin'),
|
||
|
|
use_ssl = True,
|
||
|
|
verify_certs = False,
|
||
|
|
ssl_show_warn = False,
|
||
|
|
connection_class = RequestsHttpConnection
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
### AsyncHttpConnection
|
||
|
|
|
||
|
|
```python
|
||
|
|
from opensearchpy import AsyncOpenSearch, AsyncHttpConnection
|
||
|
|
|
||
|
|
async def main():
|
||
|
|
client = AsyncOpenSearch(
|
||
|
|
hosts = [{'host': 'localhost', 'port': 9200}],
|
||
|
|
http_auth = ('admin', 'admin'),
|
||
|
|
use_ssl = True,
|
||
|
|
verify_certs = False,
|
||
|
|
ssl_show_warn = False,
|
||
|
|
connection_class = AsyncHttpConnection
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Connection Pooling
|
||
|
|
|
||
|
|
The OpenSearch Python client has a connection pool for each `host` value specified during initialization, and a connection pool for HTTP connections to each host implemented in the underlying HTTP libraries. You can adjust the max size of the latter connection pool with `pool_maxsize`.
|
||
|
|
|
||
|
|
If you don't set this value, each connection library implementation will provide its default, which is typically `10`. Changing the pool size may improve performance in some multithreaded scenarios.
|
||
|
|
|
||
|
|
The following example sets the number of connections in the connection pool to 12.
|
||
|
|
|
||
|
|
```python
|
||
|
|
from opensearchpy import OpenSearch
|
||
|
|
|
||
|
|
client = OpenSearch(
|
||
|
|
hosts = [{'host': 'localhost', 'port': 9200}],
|
||
|
|
http_auth = ('admin', 'admin'),
|
||
|
|
use_ssl = True,
|
||
|
|
verify_certs = False,
|
||
|
|
ssl_show_warn = False,
|
||
|
|
pool_maxsize = 12,
|
||
|
|
)
|
||
|
|
```
|