samples directory now passes the missing-function-docstring linter (#640)
* updated files with docstrings to pass pylint Signed-off-by: Mark Cohen <[email protected]> * updated samples to prepare for enabling missing-docstring linter; will continue to work on this before committing setup.cfg Signed-off-by: Mark Cohen <[email protected]> * removed missing-function-docstring from setup.cfg so the linter doesn't fail while work on docstrings continues Signed-off-by: Mark Cohen <[email protected]> * corrected unnecessary return docstring values Signed-off-by: Mark Cohen <[email protected]> * fixing failure in 'black' on reformatting Signed-off-by: Mark Cohen <[email protected]> --------- Signed-off-by: Mark Cohen <[email protected]>
This commit is contained in:
@@ -17,6 +17,7 @@ from opensearchpy import AsyncHttpConnection, AsyncOpenSearch
|
|||||||
|
|
||||||
|
|
||||||
async def index_records(client: Any, index_name: str, item_count: int) -> None:
|
async def index_records(client: Any, index_name: str, item_count: int) -> None:
|
||||||
|
"""asynchronously bulk index item_count records into the index (index_name)"""
|
||||||
await asyncio.gather(
|
await asyncio.gather(
|
||||||
*[
|
*[
|
||||||
client.index(
|
client.index(
|
||||||
@@ -34,6 +35,10 @@ async def index_records(client: Any, index_name: str, item_count: int) -> None:
|
|||||||
|
|
||||||
|
|
||||||
async def test_async(client_count: int = 1, item_count: int = 1) -> None:
|
async def test_async(client_count: int = 1, item_count: int = 1) -> None:
|
||||||
|
"""
|
||||||
|
asynchronously index with item_count records and run client_count clients. This function can be used to
|
||||||
|
test balancing the number of items indexed with the number of documents.
|
||||||
|
"""
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
port = 9200
|
port = 9200
|
||||||
auth = ("admin", "admin")
|
auth = ("admin", "admin")
|
||||||
@@ -74,6 +79,7 @@ async def test_async(client_count: int = 1, item_count: int = 1) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def test(item_count: int = 1, client_count: int = 1) -> None:
|
def test(item_count: int = 1, client_count: int = 1) -> None:
|
||||||
|
"""sets up and executes the asynchronous tests"""
|
||||||
loop = asyncio.new_event_loop()
|
loop = asyncio.new_event_loop()
|
||||||
asyncio.set_event_loop(loop)
|
asyncio.set_event_loop(loop)
|
||||||
loop.run_until_complete(test_async(item_count, client_count))
|
loop.run_until_complete(test_async(item_count, client_count))
|
||||||
@@ -84,26 +90,32 @@ ITEM_COUNT = 100
|
|||||||
|
|
||||||
|
|
||||||
def test_1() -> None:
|
def test_1() -> None:
|
||||||
|
"""run a test for one item and 32*ITEM_COUNT clients"""
|
||||||
test(1, 32 * ITEM_COUNT)
|
test(1, 32 * ITEM_COUNT)
|
||||||
|
|
||||||
|
|
||||||
def test_2() -> None:
|
def test_2() -> None:
|
||||||
|
"""run a test for two items and 16*ITEM_COUNT clients"""
|
||||||
test(2, 16 * ITEM_COUNT)
|
test(2, 16 * ITEM_COUNT)
|
||||||
|
|
||||||
|
|
||||||
def test_4() -> None:
|
def test_4() -> None:
|
||||||
|
"""run a test for two items and 8*ITEM_COUNT clients"""
|
||||||
test(4, 8 * ITEM_COUNT)
|
test(4, 8 * ITEM_COUNT)
|
||||||
|
|
||||||
|
|
||||||
def test_8() -> None:
|
def test_8() -> None:
|
||||||
|
"""run a test for four items and 4*ITEM_COUNT clients"""
|
||||||
test(8, 4 * ITEM_COUNT)
|
test(8, 4 * ITEM_COUNT)
|
||||||
|
|
||||||
|
|
||||||
def test_16() -> None:
|
def test_16() -> None:
|
||||||
|
"""run a test for 16 items and 2*ITEM_COUNT clients"""
|
||||||
test(16, 2 * ITEM_COUNT)
|
test(16, 2 * ITEM_COUNT)
|
||||||
|
|
||||||
|
|
||||||
def test_32() -> None:
|
def test_32() -> None:
|
||||||
|
"""run a test for 32 items and ITEM_COUNT clients"""
|
||||||
test(32, ITEM_COUNT)
|
test(32, ITEM_COUNT)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ from opensearchpy import OpenSearch
|
|||||||
|
|
||||||
|
|
||||||
def get_info(client: Any, request_count: int) -> float:
|
def get_info(client: Any, request_count: int) -> float:
|
||||||
|
"""get info from client"""
|
||||||
tt: float = 0
|
tt: float = 0
|
||||||
for n in range(request_count):
|
for n in range(request_count):
|
||||||
start = time.time() * 1000
|
start = time.time() * 1000
|
||||||
@@ -31,6 +32,7 @@ def get_info(client: Any, request_count: int) -> float:
|
|||||||
|
|
||||||
|
|
||||||
def test(thread_count: int = 1, request_count: int = 1, client_count: int = 1) -> None:
|
def test(thread_count: int = 1, request_count: int = 1, client_count: int = 1) -> None:
|
||||||
|
"""test to index with thread_count threads, item_count records and run client_count clients"""
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
port = 9200
|
port = 9200
|
||||||
auth = ("admin", "admin")
|
auth = ("admin", "admin")
|
||||||
@@ -79,22 +81,27 @@ REQUEST_COUNT = 250
|
|||||||
|
|
||||||
|
|
||||||
def test_1() -> None:
|
def test_1() -> None:
|
||||||
|
"""testing 1 threads"""
|
||||||
test(1, 32 * REQUEST_COUNT, 1)
|
test(1, 32 * REQUEST_COUNT, 1)
|
||||||
|
|
||||||
|
|
||||||
def test_2() -> None:
|
def test_2() -> None:
|
||||||
|
"""testing 2 threads"""
|
||||||
test(2, 16 * REQUEST_COUNT, 2)
|
test(2, 16 * REQUEST_COUNT, 2)
|
||||||
|
|
||||||
|
|
||||||
def test_4() -> None:
|
def test_4() -> None:
|
||||||
|
"""testing 4 threads"""
|
||||||
test(4, 8 * REQUEST_COUNT, 3)
|
test(4, 8 * REQUEST_COUNT, 3)
|
||||||
|
|
||||||
|
|
||||||
def test_8() -> None:
|
def test_8() -> None:
|
||||||
|
"""testing 8 threads"""
|
||||||
test(8, 4 * REQUEST_COUNT, 8)
|
test(8, 4 * REQUEST_COUNT, 8)
|
||||||
|
|
||||||
|
|
||||||
def test_32() -> None:
|
def test_32() -> None:
|
||||||
|
"""testing 32 threads"""
|
||||||
test(32, REQUEST_COUNT, 32)
|
test(32, REQUEST_COUNT, 32)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ from opensearchpy import OpenSearch, Urllib3HttpConnection
|
|||||||
|
|
||||||
|
|
||||||
def index_records(client: Any, index_name: str, item_count: int) -> Any:
|
def index_records(client: Any, index_name: str, item_count: int) -> Any:
|
||||||
|
"""bulk index item_count records into index_name"""
|
||||||
tt = 0
|
tt = 0
|
||||||
for n in range(10):
|
for n in range(10):
|
||||||
data: Any = []
|
data: Any = []
|
||||||
@@ -48,6 +49,7 @@ def index_records(client: Any, index_name: str, item_count: int) -> Any:
|
|||||||
|
|
||||||
|
|
||||||
def test(thread_count: int = 1, item_count: int = 1, client_count: int = 1) -> None:
|
def test(thread_count: int = 1, item_count: int = 1, client_count: int = 1) -> None:
|
||||||
|
"""test to index with thread_count threads, item_count records and run client_count clients"""
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
port = 9200
|
port = 9200
|
||||||
auth = ("admin", "admin")
|
auth = ("admin", "admin")
|
||||||
@@ -118,22 +120,27 @@ ITEM_COUNT = 1000
|
|||||||
|
|
||||||
|
|
||||||
def test_1() -> None:
|
def test_1() -> None:
|
||||||
|
"""testing 1 threads"""
|
||||||
test(1, 32 * ITEM_COUNT, 1)
|
test(1, 32 * ITEM_COUNT, 1)
|
||||||
|
|
||||||
|
|
||||||
def test_2() -> None:
|
def test_2() -> None:
|
||||||
|
"""testing 2 threads"""
|
||||||
test(2, 16 * ITEM_COUNT, 2)
|
test(2, 16 * ITEM_COUNT, 2)
|
||||||
|
|
||||||
|
|
||||||
def test_4() -> None:
|
def test_4() -> None:
|
||||||
|
"""testing 4 threads"""
|
||||||
test(4, 8 * ITEM_COUNT, 3)
|
test(4, 8 * ITEM_COUNT, 3)
|
||||||
|
|
||||||
|
|
||||||
def test_8() -> None:
|
def test_8() -> None:
|
||||||
|
"""testing 8 threads"""
|
||||||
test(8, 4 * ITEM_COUNT, 8)
|
test(8, 4 * ITEM_COUNT, 8)
|
||||||
|
|
||||||
|
|
||||||
def test_32() -> None:
|
def test_32() -> None:
|
||||||
|
"""testing 32 threads"""
|
||||||
test(32, ITEM_COUNT, 32)
|
test(32, ITEM_COUNT, 32)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ from opensearchpy import OpenSearch
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
demonstrates various functions to operate on the index (e.g. clear different levels of cache, refreshing the
|
||||||
|
index)
|
||||||
|
"""
|
||||||
# Set up
|
# Set up
|
||||||
client = OpenSearch(
|
client = OpenSearch(
|
||||||
hosts=["https://localhost:9200"],
|
hosts=["https://localhost:9200"],
|
||||||
|
|||||||
@@ -20,6 +20,12 @@ from opensearchpy import OpenSearch, RequestsAWSV4SignerAuth, RequestsHttpConnec
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
connects to a cluster specified in environment variables, creates an index, inserts documents,
|
||||||
|
searches the index, deletes the document, deletes the index.
|
||||||
|
the environment variables are "ENDPOINT" for the cluster endpoint, AWS_REGION for the region in which the cluster
|
||||||
|
is hosted, and SERVICE to indicate if this is an ES 7.10.2 compatible cluster
|
||||||
|
"""
|
||||||
# verbose logging
|
# verbose logging
|
||||||
logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO)
|
logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO)
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,18 @@ from opensearchpy import OpenSearch, Urllib3AWSV4SignerAuth, Urllib3HttpConnecti
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
1. connects to an OpenSearch cluster on AWS defined by environment variables (i.e. ENDPOINT - cluster endpoint like
|
||||||
|
my-test-domain.us-east-1.es.amazonaws.com; AWS_REGION like us-east-1, us-west-2; and SERVICE like es which
|
||||||
|
differentiates beteween serverless and the managed service.
|
||||||
|
2. creates an index called "movies" and adds a single document
|
||||||
|
3. queries for that document
|
||||||
|
4. deletes the document
|
||||||
|
5. deletes the index
|
||||||
|
"""
|
||||||
# verbose logging
|
# verbose logging
|
||||||
logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO)
|
logging.basicConfig(format="%(levelname)s:%(message)s", level=logging.INFO)
|
||||||
|
|
||||||
# cluster endpoint, for example: my-test-domain.us-east-1.es.amazonaws.com
|
|
||||||
url = urlparse(environ["ENDPOINT"])
|
url = urlparse(environ["ENDPOINT"])
|
||||||
region = environ.get("AWS_REGION", "us-east-1")
|
region = environ.get("AWS_REGION", "us-east-1")
|
||||||
service = environ.get("SERVICE", "es")
|
service = environ.get("SERVICE", "es")
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ from opensearchpy import OpenSearch
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""demonstrates how to bulk load data into an index"""
|
||||||
# connect to an instance of OpenSearch
|
# connect to an instance of OpenSearch
|
||||||
|
|
||||||
host = os.getenv("HOST", default="localhost")
|
host = os.getenv("HOST", default="localhost")
|
||||||
|
|||||||
@@ -17,6 +17,10 @@ from opensearchpy import OpenSearch, helpers
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
demonstrates how to bulk load data using opensearchpy.helpers including examples of serial, parallel, and streaming
|
||||||
|
bulk load
|
||||||
|
"""
|
||||||
# connect to an instance of OpenSearch
|
# connect to an instance of OpenSearch
|
||||||
|
|
||||||
host = os.getenv("HOST", default="localhost")
|
host = os.getenv("HOST", default="localhost")
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ from opensearchpy import OpenSearch
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
bulk index 100 items and then delete the index
|
||||||
|
"""
|
||||||
# connect to an instance of OpenSearch
|
# connect to an instance of OpenSearch
|
||||||
|
|
||||||
host = os.getenv("HOST", default="localhost")
|
host = os.getenv("HOST", default="localhost")
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ from opensearchpy import OpenSearch
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
provides samples for different ways to handle documents including indexing, searching, updating, and deleting
|
||||||
|
"""
|
||||||
# Connect to OpenSearch
|
# Connect to OpenSearch
|
||||||
client = OpenSearch(
|
client = OpenSearch(
|
||||||
hosts=["https://localhost:9200"],
|
hosts=["https://localhost:9200"],
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ from opensearchpy import OpenSearch
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
an example showing how to create an synchronous connection to OpenSearch, create an index, index a document
|
||||||
|
and search to return the document
|
||||||
|
"""
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
port = 9200
|
port = 9200
|
||||||
auth = ("admin", "admin") # For testing only. Don't store credentials in code.
|
auth = ("admin", "admin") # For testing only. Don't store credentials in code.
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ from opensearchpy import AsyncOpenSearch
|
|||||||
|
|
||||||
|
|
||||||
async def main() -> None:
|
async def main() -> None:
|
||||||
|
"""
|
||||||
|
an example showing how to create an asynchronous connection to OpenSearch, create an index, index a document
|
||||||
|
and search to return the document
|
||||||
|
"""
|
||||||
# connect to OpenSearch
|
# connect to OpenSearch
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
port = 9200
|
port = 9200
|
||||||
|
|||||||
@@ -12,6 +12,20 @@ from opensearchpy import OpenSearch
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
1. connects to an OpenSearch instance running on localhost
|
||||||
|
2. Create an index template named `books` with default settings and mappings for indices of
|
||||||
|
the `books-*` pattern. You can create an index template to define default settings and mappings for indices
|
||||||
|
of certain patterns.
|
||||||
|
3. When creating an index that matches the `books-*` pattern, OpenSearch will automatically apply the template's
|
||||||
|
settings and mappings to the index. Create an index named books-nonfiction and verify that its settings and mappings
|
||||||
|
match those of the template
|
||||||
|
4. If multiple index templates match the index's name, OpenSearch will apply the template with the highest
|
||||||
|
`priority`. In the example, two templates are created with different priorities.
|
||||||
|
5. Composable index templates are a new type of index template that allow you to define multiple component templates
|
||||||
|
and compose them into a final template. The last part of the example before cleaning up creates a component
|
||||||
|
template named `books_mappings` with default mappings for indices of the `books-*` and `books-fiction-*` patterns.
|
||||||
|
"""
|
||||||
# Create a client instance
|
# Create a client instance
|
||||||
client = OpenSearch(
|
client = OpenSearch(
|
||||||
hosts=["https://localhost:9200"],
|
hosts=["https://localhost:9200"],
|
||||||
@@ -20,8 +34,7 @@ def main() -> None:
|
|||||||
http_auth=("admin", "admin"),
|
http_auth=("admin", "admin"),
|
||||||
)
|
)
|
||||||
|
|
||||||
# You can create an index template to define default settings and mappings for indices of certain patterns.
|
# create an index template
|
||||||
# The following example creates an index template named `books` with default settings and mappings for indices of the `books-*` pattern:
|
|
||||||
client.indices.put_index_template(
|
client.indices.put_index_template(
|
||||||
name="books",
|
name="books",
|
||||||
body={
|
body={
|
||||||
@@ -41,13 +54,10 @@ def main() -> None:
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
# Now, when you create an index that matches the `books-*` pattern, OpenSearch will automatically apply the template's settings and mappings to the index.
|
# create the index which applies the index template settings matched by pattern
|
||||||
# Let's create an index named books-nonfiction and verify that its settings and mappings match those of the template:
|
|
||||||
client.indices.create(index="books-nonfiction")
|
client.indices.create(index="books-nonfiction")
|
||||||
print(client.indices.get(index="books-nonfiction"))
|
print(client.indices.get(index="books-nonfiction"))
|
||||||
|
|
||||||
# If multiple index templates match the index's name, OpenSearch will apply the template with the highest `priority`.
|
|
||||||
# The following example creates two index templates named `books-*` and `books-fiction-*` with different settings:
|
|
||||||
client.indices.put_index_template(
|
client.indices.put_index_template(
|
||||||
name="books",
|
name="books",
|
||||||
body={
|
body={
|
||||||
@@ -74,8 +84,6 @@ def main() -> None:
|
|||||||
client.indices.create(index="books-fiction-romance")
|
client.indices.create(index="books-fiction-romance")
|
||||||
print(client.indices.get(index="books-fiction-romance"))
|
print(client.indices.get(index="books-fiction-romance"))
|
||||||
|
|
||||||
# Composable index templates are a new type of index template that allow you to define multiple component templates and compose them into a final template.
|
|
||||||
# The following example creates a component template named `books_mappings` with default mappings for indices of the `books-*` and `books-fiction-*` patterns:
|
|
||||||
client.cluster.put_component_template(
|
client.cluster.put_component_template(
|
||||||
name="books_mappings",
|
name="books_mappings",
|
||||||
body={
|
body={
|
||||||
@@ -92,6 +100,7 @@ def main() -> None:
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# composable index templates
|
||||||
client.indices.put_index_template(
|
client.indices.put_index_template(
|
||||||
name="books",
|
name="books",
|
||||||
body={
|
body={
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ from opensearchpy import OpenSearch
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
demonstrates how to index a document using a dict
|
||||||
|
"""
|
||||||
# connect to OpenSearch
|
# connect to OpenSearch
|
||||||
|
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ from opensearchpy import AsyncOpenSearch
|
|||||||
|
|
||||||
|
|
||||||
async def main() -> None:
|
async def main() -> None:
|
||||||
|
"""
|
||||||
|
this sample uses asyncio and AsyncOpenSearch to asynchronously connect to local OpenSearch cluster, create an index,
|
||||||
|
index data, search the index, delete the document, delete the index
|
||||||
|
"""
|
||||||
# connect to OpenSearch
|
# connect to OpenSearch
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
port = 9200
|
port = 9200
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ from opensearchpy import AsyncHttpConnection, AsyncOpenSearch, helpers
|
|||||||
|
|
||||||
|
|
||||||
async def main() -> None:
|
async def main() -> None:
|
||||||
|
"""
|
||||||
|
asynchronously create, bulk index, and query kNN. then delete the index
|
||||||
|
"""
|
||||||
# connect to an instance of OpenSearch
|
# connect to an instance of OpenSearch
|
||||||
host = os.getenv("HOST", default="localhost")
|
host = os.getenv("HOST", default="localhost")
|
||||||
port = int(os.getenv("PORT", 9200))
|
port = int(os.getenv("PORT", 9200))
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ from opensearchpy import OpenSearch, helpers
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
create, bulk index, and query kNN. then delete the index
|
||||||
|
"""
|
||||||
# connect to an instance of OpenSearch
|
# connect to an instance of OpenSearch
|
||||||
|
|
||||||
host = os.getenv("HOST", default="localhost")
|
host = os.getenv("HOST", default="localhost")
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ from opensearchpy import OpenSearch, helpers
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
create, query, and delete a kNN index
|
||||||
|
"""
|
||||||
# connect to an instance of OpenSearch
|
# connect to an instance of OpenSearch
|
||||||
|
|
||||||
host = os.getenv("HOST", default="localhost")
|
host = os.getenv("HOST", default="localhost")
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ from opensearchpy import OpenSearch, helpers
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
create a kNN index using Lucene kNN and query it using filters
|
||||||
|
"""
|
||||||
# connect to an instance of OpenSearch
|
# connect to an instance of OpenSearch
|
||||||
|
|
||||||
host = os.getenv("HOST", default="localhost")
|
host = os.getenv("HOST", default="localhost")
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ urllib3.disable_warnings()
|
|||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
sample for custom logging; this shows how to create a console handler, connect to OpenSearch, define a custom
|
||||||
|
logger and log to an OpenSearch index
|
||||||
|
"""
|
||||||
print("Collecting logs.")
|
print("Collecting logs.")
|
||||||
|
|
||||||
# Create a console handler
|
# Create a console handler
|
||||||
@@ -47,15 +51,22 @@ def main() -> None:
|
|||||||
# Add console handler to the logger
|
# Add console handler to the logger
|
||||||
os_logger.addHandler(console_handler)
|
os_logger.addHandler(console_handler)
|
||||||
|
|
||||||
# Define a custom handler that logs to OpenSearch
|
|
||||||
class OpenSearchHandler(logging.Handler):
|
class OpenSearchHandler(logging.Handler):
|
||||||
|
"""
|
||||||
|
define a custom handler that logs to opensearch
|
||||||
|
"""
|
||||||
|
|
||||||
# Initializer / Instance attributes
|
# Initializer / Instance attributes
|
||||||
def __init__(self, opensearch_client: Any) -> None:
|
def __init__(self, opensearch_client: Any) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.os_client = opensearch_client
|
self.os_client = opensearch_client
|
||||||
|
|
||||||
# Build index name (e.g., "logs-YYYY-MM-DD")
|
|
||||||
def _build_index_name(self) -> str:
|
def _build_index_name(self) -> str:
|
||||||
|
"""
|
||||||
|
Build index name (e.g., "logs-YYYY-MM-DD")
|
||||||
|
:rtype: bool
|
||||||
|
:return: a str with date formatted as 'logs-YYYY-MM-DD'
|
||||||
|
"""
|
||||||
return f"logs-{datetime.date(datetime.now())}"
|
return f"logs-{datetime.date(datetime.now())}"
|
||||||
|
|
||||||
# Emit logs to the OpenSearch cluster
|
# Emit logs to the OpenSearch cluster
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
# Modifications Copyright OpenSearch Contributors. See
|
# Modifications Copyright OpenSearch Contributors. See
|
||||||
# GitHub history for details.
|
# GitHub history for details.
|
||||||
|
|
||||||
|
|
||||||
# A basic OpenSearch sample that create and manage roles.
|
|
||||||
|
|
||||||
from opensearchpy import OpenSearch
|
from opensearchpy import OpenSearch
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
A basic OpenSearch sample that create and manage roles.
|
||||||
|
"""
|
||||||
# connect to OpenSearch
|
# connect to OpenSearch
|
||||||
|
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
|
|||||||
@@ -9,13 +9,13 @@
|
|||||||
# Modifications Copyright OpenSearch Contributors. See
|
# Modifications Copyright OpenSearch Contributors. See
|
||||||
# GitHub history for details.
|
# GitHub history for details.
|
||||||
|
|
||||||
|
|
||||||
# A basic OpenSearch sample that create and manage users.
|
|
||||||
|
|
||||||
from opensearchpy import OpenSearch
|
from opensearchpy import OpenSearch
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
"""
|
||||||
|
A basic OpenSearch sample that create and manage users.
|
||||||
|
"""
|
||||||
# connect to OpenSearch
|
# connect to OpenSearch
|
||||||
|
|
||||||
host = "localhost"
|
host = "localhost"
|
||||||
|
|||||||
Reference in New Issue
Block a user