Skip to main content

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

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

elastro-0.1.3.tar.gz (89.0 kB view details)

Uploaded Source

Built Distribution

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

elastro-0.1.3-py3-none-any.whl (41.8 kB view details)

Uploaded Python 3

File details

Details for the file elastro-0.1.3.tar.gz.

File metadata

  • Download URL: elastro-0.1.3.tar.gz
  • Upload date:
  • Size: 89.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.5

File hashes

Hashes for elastro-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a201f18a837720b71f1857325079a223dece9640cf57fde6c26302fe0d9c2bd3
MD5 cdbe33c41994e5983bfba9362082603d
BLAKE2b-256 584bb0e0b882cbfee560ff7ae7b8fb3697f3d6bf5f0828297cf3c6510af79ff5

See more details on using hashes here.

File details

Details for the file elastro-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: elastro-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.5

File hashes

Hashes for elastro-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c3dde25d8b100f2be64855c93eee6cdbd028a297cdf943fa3aedb327ce28d607
MD5 8413f15246110b7559a06f85713d77ef
BLAKE2b-256 8a849ec6c019c06d356afc299972d8d5d5aeee758f98a3cceec636a8f0723913

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