Skip to main content

Utilities for OpenSearch demonstrations and educational content

Project description

OpenSearch Demos Utils

A Python package providing utilities for OpenSearch demonstrations and educational content, specifically optimized for Google Colab environments.

Features

  • 🔗 Connection Management: Easy connection setup for DataStax Astra managed OpenSearch
  • 📊 Data Loading: In-memory sample data generation (no external files needed)
  • 📈 Visualization: Colab-optimized plotting functions for search results and metrics
  • 🎯 Sample Datasets: Pre-built generators for products, articles, and logs data
  • 🚀 Colab Ready: Designed specifically for Google Colab environments

Installation

pip install opensearch-demos-utils

Quick Start

Basic Connection (Google Colab)

from opensearch_demos_utils import ColabConnectionConfig, OpenSearchConnection

# Configure connection for DataStax Astra (Colab-optimized)
config = ColabConnectionConfig(
    host="your-cluster.astra.datastax.com",
    port=9200,
    astra_cs_token="AstraCS:your-token-here",
    use_ssl=True,
    verify_certs=False
)

# Create connection
connection = OpenSearchConnection(config)
client = connection.connect()

# Test the connection
if connection.test_connection():
    print("✅ Connected successfully!")

Quick Connection Helper

from opensearch_demos_utils import create_colab_connection

# One-line connection setup
connection = create_colab_connection(
    host="your-cluster.astra.datastax.com",
    astra_cs_token="AstraCS:your-token-here"
)
client = connection.connect()

Generate Sample Data

from opensearch_demos_utils import prepare_sample_data_for_demo

# Generate sample data
products = prepare_sample_data_for_demo('products', 50)
articles = prepare_sample_data_for_demo('articles', 30)
logs = prepare_sample_data_for_demo('logs', 100)

print(f"Generated {len(products)} products, {len(articles)} articles, {len(logs)} logs")

# Or use embedded sample data (smaller datasets)
embedded_articles = prepare_sample_data_for_demo('articles')  # Uses embedded data
embedded_products = prepare_sample_data_for_demo('products')  # Uses embedded data
embedded_logs = prepare_sample_data_for_demo('logs')  # Uses embedded data

Visualize Search Results

from opensearch_demos_utils.visualization import (
    plot_search_results, 
    create_aggregation_charts,
    create_dashboard_view
)

# Visualize search results
search_response = client.search(index="demo_products", body={"query": {"match_all": {}}})
plot_search_results(search_response, title="Product Search Results")

# Visualize aggregations
agg_response = client.search(
    index="demo_products", 
    body={"aggs": {"categories": {"terms": {"field": "category"}}}}
)
create_aggregation_charts(agg_response["aggregations"], title="Product Categories")

# Create comprehensive dashboard
create_dashboard_view(
    search_results=search_response,
    aggregation_results=agg_response,
    title="OpenSearch Analytics Dashboard"
)

Core Components

ColabConnectionConfig

Colab-optimized configuration class for OpenSearch connections:

  • Astra Validation: Auto-validates DataStax Astra endpoints and tokens
  • Colab Environment Checks: Prevents localhost/private IP connections
  • SSL Auto-Configuration: Automatically enables SSL for Astra endpoints
  • Helpful Error Messages: Provides Colab-specific troubleshooting guidance

ConnectionConfig (Legacy)

Backward-compatible configuration class that extends ColabConnectionConfig:

  • Maintains compatibility with existing code
  • Includes all Colab optimizations
  • Supports additional legacy features like custom CA certificates

DataLoader

Comprehensive data loading and preparation utilities:

  • In-memory data generation: No external files needed for Colab
  • String-based loading: Load JSON/CSV data from strings
  • Data validation and cleaning: Automatic data sanitization
  • OpenSearch indexing preparation: Ready-to-index data formatting
  • Bulk operation support: Efficient bulk indexing format creation

Sample Data Generation

Advanced sample data management system:

  • Products: E-commerce catalog with categories, prices, ratings, inventory
  • Articles: Blog posts with content, metadata, engagement metrics, SEO data
  • Logs: Application logs with timestamps, levels, metrics, request tracking
  • Embedded datasets: Pre-built sample data for quick demos
  • Bulk indexing support: OpenSearch-ready data preparation utilities

Visualization Functions

Colab-optimized plotting functions with enhanced display features:

  • plot_search_results(): Visualize search results with score distributions and category breakdowns
  • create_aggregation_charts(): Chart aggregation results with automatic chart type selection
  • display_cluster_metrics(): Show comprehensive cluster health, statistics, and storage metrics
  • create_dashboard_view(): Multi-panel dashboard combining search, aggregation, and cluster data
  • format_search_response_for_display(): Format results as DataFrame with enhanced Colab display
  • create_comparison_chart(): Side-by-side comparison visualizations
  • plot_aggregation_results(): Specialized aggregation plotting with Colab optimization

Google Colab Optimization

This package is specifically designed for Google Colab environments:

  • No File Dependencies: All sample data is generated in-memory
  • Colab-Friendly Visualizations: Plots optimized for notebook display
  • Easy Installation: Single pip install with all dependencies
  • Astra Integration: Pre-configured for DataStax Astra managed OpenSearch
  • Error Handling: Colab-specific troubleshooting messages

Configuration Templates

Installation Cell (Colab)

# Install dependencies
import subprocess
import sys

def install_package(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", package])

packages = [
    "opensearch-py>=2.4.0",
    "opensearch-demos-utils>=1.0.0",
    "pandas>=1.3.0",
    "matplotlib>=3.5.0"
]

for package in packages:
    install_package(package)
    print(f"✅ {package}")

Configuration Cell (Colab)

# OpenSearch Connection Configuration
OPENSEARCH_CONFIG = {
    "host": "your-cluster.astra.datastax.com",
    "port": 9200,
    "astra_cs_token": "AstraCS:your-token-here",
    "use_ssl": True,
    "verify_certs": False
}

from opensearch_demos_utils import ColabConnectionConfig, OpenSearchConnection

config = ColabConnectionConfig(**OPENSEARCH_CONFIG)
connection = OpenSearchConnection(config)
client = connection.connect()

# Or use the convenience function
from opensearch_demos_utils import create_colab_connection
connection = create_colab_connection(**OPENSEARCH_CONFIG)
client = connection.connect()

Requirements

  • Python 3.8+
  • opensearch-py >= 2.4.0
  • pandas >= 1.3.0
  • matplotlib >= 3.5.0
  • seaborn >= 0.11.0

License

Apache License 2.0

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues and questions:

Examples

Check out the example notebooks in the demos directory for complete usage examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

opensearch_demos_utils-1.0.0.tar.gz (50.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

opensearch_demos_utils-1.0.0-py3-none-any.whl (40.3 kB view details)

Uploaded Python 3

File details

Details for the file opensearch_demos_utils-1.0.0.tar.gz.

File metadata

  • Download URL: opensearch_demos_utils-1.0.0.tar.gz
  • Upload date:
  • Size: 50.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.17

File hashes

Hashes for opensearch_demos_utils-1.0.0.tar.gz
Algorithm Hash digest
SHA256 211fb8c63b67592db0b6accd5d8442f2211f0a530ef7b03c5ac23c93b8ac9dc4
MD5 b6337c2694e30bb90facbf2794e9c3e5
BLAKE2b-256 cab1f5fdc1442b62fa2245d2b8a2431cd66b2128d71ac1446555ec492447df48

See more details on using hashes here.

File details

Details for the file opensearch_demos_utils-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for opensearch_demos_utils-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ff6a3cdcfb250a972fad15736ca0fa8d8cb4556f0f198f2dc32157e3819710d
MD5 107c493d289ad8ee49256e47c4cf5c41
BLAKE2b-256 041f218479436a4191c0b340f160a9a3b853534b56858d0c99dd3ae95f5854e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page