From 1212df567b3d384f9e3dbe486d911b8f8912f506 Mon Sep 17 00:00:00 2001 From: Rushi Agrawal Date: Sat, 28 Aug 2021 00:02:52 +0530 Subject: [PATCH] Update README.md examples to be consistent with doc examples Signed-off-by: Rushi Agrawal --- README.md | 136 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 109 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index deb2411a..68e4661b 100644 --- a/README.md +++ b/README.md @@ -21,37 +21,119 @@ OpenSearch Python Client This is the low-level client. A high-level Python client is in the works, and will be available soon. -## Example use +## Setup -```python - ->>> from datetime import datetime ->>> from opensearch import OpenSearch - -# by default we connect to localhost:9200 ->>> client = OpenSearch() - -# create an index in OpenSearch, ignore status code 400 (index already exists) ->>> client.indices.create(index='my-index', ignore=400) -{'acknowledged': True, 'shards_acknowledged': True, 'index': 'my-index'} - -# datetimes will be serialized ->>> client.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 ->>> client.get(index="my-index", id=42)['_source'] -{'any': 'data', 'timestamp': '2019-05-17T17:28:10.329598'} +To add the client to your project, install it using [pip](https://pip.pypa.io/): +```bash +pip install git+https://github.com/opensearch-project/opensearch-py.git ``` +Then import it like any other module: + +```python +from opensearch import OpenSearch +``` + +If you prefer to add the client manually or just want to examine the source code, see [opensearch-py on GitHub](https://github.com/opensearch-project/opensearch-py). + + +## Sample code + +```python +from opensearch import OpenSearch + +host = 'localhost' +port = 9200 +auth = ('admin', 'admin') # For testing only. Don't store credentials in code. +ca_certs_path = '/full/path/to/root-ca.pem' # Provide a CA bundle if you use intermediate CAs with your root CA. + +# Optional client certificates if you don't want to use HTTP basic authentication. +# client_cert_path = '/full/path/to/client.pem' +# client_key_path = '/full/path/to/client-key.pem' + +# Create the client with SSL/TLS enabled, but hostname verification disabled. +client = OpenSearch( + hosts = [{'host': host, 'port': port}], + http_compress = True, # enables gzip compression for request bodies + http_auth = auth, + # client_cert = client_cert_path, + # client_key = client_key_path, + use_ssl = True, + verify_certs = True, + ssl_assert_hostname = False, + ssl_show_warn = False, + ca_certs = ca_certs_path +) + +# Create an index with non-default settings. +index_name = 'python-test-index3' +index_body = { + 'settings': { + 'index': { + 'number_of_shards': 4 + } + } +} + +response = client.indices.create(index_name, body=index_body) +print('\nCreating index:') +print(response) + +# Add a document to the index. +document = { + 'title': 'Moneyball', + 'director': 'Bennett Miller', + 'year': '2011' +} +id = '1' + +response = client.index( + index = index_name, + body = document, + id = id, + refresh = True +) + +print('\nAdding document:') +print(response) + +# Search for the document. +q = 'miller' +query = { + 'size': 5, + 'query': { + 'multi_match': { + 'query': q, + 'fields': ['title^2', 'director'] + } + } +} + +response = client.search( + body = query, + index = index_name +) +print('\nSearch results:') +print(response) + +# Delete the document. +response = client.delete( + index = index_name, + id = id +) + +print('\nDeleting document:') +print(response) + +# Delete the index. +response = client.indices.delete( + index = index_name +) + +print('\nDeleting index:') +print(response) +``` ## Project Resources