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 breakdownscreate_aggregation_charts(): Chart aggregation results with automatic chart type selectiondisplay_cluster_metrics(): Show comprehensive cluster health, statistics, and storage metricscreate_dashboard_view(): Multi-panel dashboard combining search, aggregation, and cluster dataformat_search_response_for_display(): Format results as DataFrame with enhanced Colab displaycreate_comparison_chart(): Side-by-side comparison visualizationsplot_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:
- GitHub Issues: opensearch-demos/issues
- Documentation: README
Examples
Check out the example notebooks in the demos directory for complete usage examples.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
211fb8c63b67592db0b6accd5d8442f2211f0a530ef7b03c5ac23c93b8ac9dc4
|
|
| MD5 |
b6337c2694e30bb90facbf2794e9c3e5
|
|
| BLAKE2b-256 |
cab1f5fdc1442b62fa2245d2b8a2431cd66b2128d71ac1446555ec492447df48
|
File details
Details for the file opensearch_demos_utils-1.0.0-py3-none-any.whl.
File metadata
- Download URL: opensearch_demos_utils-1.0.0-py3-none-any.whl
- Upload date:
- Size: 40.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ff6a3cdcfb250a972fad15736ca0fa8d8cb4556f0f198f2dc32157e3819710d
|
|
| MD5 |
107c493d289ad8ee49256e47c4cf5c41
|
|
| BLAKE2b-256 |
041f218479436a4191c0b340f160a9a3b853534b56858d0c99dd3ae95f5854e5
|