A comprehensive Python library for Elasticsearch management with both programmatic and CLI interfaces
Project description
Elastro
A comprehensive Python module for managing Elasticsearch operations within pipeline processes.
Overview
Elastro is a Python library designed to simplify interactions with Elasticsearch. It provides a clean, intuitive API for common Elasticsearch operations including:
- Index management (create, update, delete)
- Document operations (indexing, searching, updating)
- Datastream management
- Advanced query building and search functionality
The library offers both a programmatic API and a command-line interface for seamless integration with various workflows.
Installation
pip install elastro
Or from source:
git clone https://github.com/yourusername/elastro.git
cd elastro
pip install -e .
Basic Usage
Client Connection
from elastro import ElasticsearchClient
# Connect using API key
client = ElasticsearchClient(
hosts=["https://elasticsearch:9200"],
auth={"api_key": "your-api-key"}
)
# Or using basic auth
client = ElasticsearchClient(
hosts=["https://elasticsearch:9200"],
auth={"username": "elastic", "password": "password"}
)
# Connect to Elasticsearch
client.connect()
Index Management
from elastro import IndexManager
index_manager = IndexManager(client)
# Create an index
index_manager.create(
name="products",
settings={
"number_of_shards": 3,
"number_of_replicas": 1
},
mappings={
"properties": {
"name": {"type": "text"},
"price": {"type": "float"},
"description": {"type": "text"},
"created": {"type": "date"}
}
}
)
# Check if an index exists
if index_manager.exists("products"):
print("Products index exists!")
# Delete an index
index_manager.delete("products")
Document Operations
from elastro import DocumentManager
doc_manager = DocumentManager(client)
# Index a document
doc_manager.index(
index="products",
id="1",
document={
"name": "Laptop",
"price": 999.99,
"description": "High-performance laptop",
"created": "2023-05-01T12:00:00"
}
)
# Search for documents
results = doc_manager.search(
index="products",
query={"match": {"name": "laptop"}}
)
print(results)
CLI Usage
# Initialize configuration
elastic-cli config init
# Create an index
elastic-cli index create products --shards 3 --replicas 1 --mapping ./product-mapping.json
# Add a document
elastic-cli doc index products --id 1 --file ./product.json
# Search documents
elastic-cli search products "name:laptop" --format json
Documentation
For more detailed documentation, please refer to the docs directory:
Examples
Check out the examples directory for more usage examples:
Contributing
We welcome contributions to Elastro! If you'd like to contribute, please follow these guidelines:
Development Setup
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/elastro.git - Install development dependencies:
pip install -e ".[dev]" - Create a branch for your changes:
git checkout -b feature/your-feature-name
Code Standards
- Follow PEP 8 style guidelines
- Use type hints for all method signatures and return values
- Write comprehensive docstrings (PEP 257) for all public classes and methods
- Keep files under 300 lines of code maximum
- Implement custom exception classes for different error categories
- Validate inputs using Pydantic before processing
Architecture Guidelines
- Maintain separation of concerns between core functionality and interfaces
- Design modular components with single responsibilities
- Follow SOLID principles
- Implement dependency injection for better testability
- Structure code by functionality rather than technology type
Testing
- Write unit tests with pytest for all new functionality
- Maintain test coverage of at least 80% for core functionality
- Run tests using
./run_tests.shbefore submitting a PR
Submitting Changes
- Ensure your code follows the project's standards
- Write meaningful commit messages
- Push your changes to your fork
- Submit a pull request to the main repository
- Describe your changes and the problem they solve
Documentation
- Update documentation for any changed functionality
- Add examples for new features
- Write clear, concise docstrings for all public APIs
License
MIT
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
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 elastro-0.1.0.tar.gz.
File metadata
- Download URL: elastro-0.1.0.tar.gz
- Upload date:
- Size: 89.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8dfb49740689134be4689071c8d0226ba9da7b77363485c324bcae8338f2db0d
|
|
| MD5 |
dca54da6eca5c30f9e06c44fb0b32eec
|
|
| BLAKE2b-256 |
ba657f47f3b9fae92e3c0a331012b248ae0e8def1caa80d019b3a926acef31f6
|
File details
Details for the file elastro-0.1.0-py3-none-any.whl.
File metadata
- Download URL: elastro-0.1.0-py3-none-any.whl
- Upload date:
- Size: 41.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24f428efece089a34c90420ca5b24d208ed7a01b8b78892f4fa9fa009f36d014
|
|
| MD5 |
edd8781c6def91a967bc1400ab7bed87
|
|
| BLAKE2b-256 |
e248ac0b40bc428e2337cb984592c1e840324468816d664904e6cbae6b6a1d03
|