tellaro-query-language 3.0.1

A flexible, human-friendly query language for searching and filtering structured data
Documentation
//! OpenSearch backend implementation for TQL.
//!
//! This module provides integration with OpenSearch, enabling TQL queries to be
//! translated to OpenSearch Query DSL and executed against OpenSearch indices.
//!
//! # Features
//!
//! - TQL query execution with `execute_opensearch()` - the main entry point
//! - Client connection management with environment configuration
//! - TQL AST to OpenSearch DSL translation
//! - Field mapping intelligence (keyword, text, multi-field handling)
//! - Post-processing for mutators not supported by OpenSearch (is_private, is_global, geo, etc.)
//! - Automatic scroll API for scan_all mode (unlimited results)
//!
//! # Example
//!
//! ```no_run
//! use tellaro_query_language::opensearch::{OpenSearchConfig, TqlExecutor, ExecuteOptions};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//!     // Create executor from environment configuration
//!     let config = OpenSearchConfig::from_env()?;
//!     let executor = TqlExecutor::new(config)?;
//!
//!     // Execute TQL query with scan_all for unlimited results
//!     let result = executor.execute_opensearch(
//!         "source.ip | is_private eq true",
//!         "endpoint-*",
//!         ExecuteOptions::default()
//!             .with_scan_all(true)
//!             .with_time_range("2024-01-01T00:00:00Z", "2024-01-02T00:00:00Z"),
//!     ).await?;
//!
//!     println!("Found {} results (OpenSearch total: {})",
//!         result.total, result.opensearch_total);
//!     println!("Post-processing applied: {}", result.post_processing_applied);
//!
//!     Ok(())
//! }
//! ```

pub mod client;
pub mod error;
pub mod executor;
pub mod field_mappings;
pub mod mapping_cache;
pub mod post_processor;
pub mod query_builder;
pub mod stats_translator;

pub use client::{OpenSearchClient, OpenSearchConfig};
pub use error::{OpenSearchError, Result};
pub use executor::{
    ExecuteOptions, ExecuteResult, MappingSource, QueryAnalysis, ScanInfo, TimeRange,
    TotalRelation, TqlExecutor, TrackTotalHits,
};
pub use field_mappings::{FieldMapping, FieldMappings, FieldType};
pub use mapping_cache::MappingCache;
pub use post_processor::PostProcessor;
pub use query_builder::QueryBuilder;