Skip to main content

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/Fremen-Labs/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

  1. Fork the repository
  2. Clone your fork: git clone https://github.com/your-username/elastro.git
  3. Install development dependencies: pip install -e ".[dev]"
  4. 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.sh before submitting a PR

Submitting Changes

  1. Ensure your code follows the project's standards
  2. Write meaningful commit messages
  3. Push your changes to your fork
  4. Submit a pull request to the main repository
  5. 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

Metadata

Release files for elastro 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for elastro 0.1.5
File Size Uploaded
elastro-0.1.5.tar.gz 89.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for elastro 0.1.5
File Interpreter ABI Platform
elastro-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 130.8 kB

Release files / elastro-0.1.5.tar.gz

Download URL elastro-0.1.5.tar.gz
Size 89.0 kB
Tags Source
SHA-256 checksum
How to use checksums
8a1efcccf51482945a4c645e37f40d8880a8490ba10c140cc643f3fb891a10de
BLAKE2b-256 checksum
How to use checksums
c47dd78fcc7494535bc18ca13a148b5480837a2dc5586c5620f373284f95c607
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.5

Release files / elastro-0.1.5-py3-none-any.whl

Download URL elastro-0.1.5-py3-none-any.whl
Size 41.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
91474598c5c96f2b7c77e6efe4b24e9a694d19e07934f058e81eb4682e505fc4
BLAKE2b-256 checksum
How to use checksums
8024230e786798ae3d3b68e2b7d7a54593fa4a646f7094d541204f3641fa4f81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.5

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page