UNPKG

dsl-builder

Version:

OpenSearch Query Builder - Extract from OpenSearch Dashboards

130 lines (93 loc) โ€ข 3.27 kB
# OpenSearch Query Builder A library extracted from OpenSearch Dashboard for Query DSL conversion. This package provides core functionality for OpenSearch/Elasticsearch query builder. **Version Compatibility:** This library is extracted from OpenSearch-Dashboards version 3.1.0 (as of 2025.7.20) and maintains compatibility with that version's query DSL structure and features. **Module Support:** This package supports both CommonJS and ES Module imports for maximum compatibility. ## ๐Ÿ“ฆ Installation ```bash npm install dsl-builder ``` ```bash yarn add dsl-builder ``` ## ๐Ÿš€ Key Features ### Query DSL Conversion - KQL (Kibana Query Language) parsing and conversion - Filter query creation and management - OpenSearch/Elasticsearch query DSL generation ### Field Type System - Support for various field types (string, number, date, geo, etc.) - Specialized query processing for each field type ### Module Support - **CommonJS**: `const { buildOpenSearchQuery } = require('dsl-builder');` - **ES Modules**: `import { buildOpenSearchQuery } from 'dsl-builder';` ## ๐Ÿ“– Usage ### KQL Query Conversion ```typescript // ES Module import import { buildOpenSearchQuery } from 'dsl-builder'; // CommonJS import // const { buildOpenSearchQuery } = require('dsl-builder'); const indexPattern = { title: 'logs-*', fields: [ { name: 'status', type: 'string' }, { name: 'response_time', type: 'number' }, { name: '@timestamp', type: 'date' } ] }; // Convert KQL query to OpenSearch DSL const dsl = buildOpenSearchQuery(indexPattern, [ { query: 'status:error AND response_time:>500', language: 'kuery' } ]); console.log(JSON.stringify(dsl, null, 2)); ``` ## ๐Ÿ”ง API Reference ### buildOpenSearchQuery Converts query objects to OpenSearch DSL. ```typescript function buildOpenSearchQuery( indexPattern: IndexPattern, queries: Query[], filters: Filter[] = [], config: QueryState = {} ): OpenSearchQuery ``` ## ๐Ÿ“ Project Structure ``` src/ โ”œโ”€โ”€ index_patterns/ # Index pattern related functionality โ”‚ โ”œโ”€โ”€ fields/ # Field types and mapping โ”‚ โ”œโ”€โ”€ index_patterns/ # Index pattern service โ”‚ โ”œโ”€โ”€ lib/ # Utility library โ”‚ โ””โ”€โ”€ errors/ # Error handling โ”œโ”€โ”€ opensearch_query/ # Query DSL conversion โ”‚ โ”œโ”€โ”€ kuery/ # KQL parser and converter โ”‚ โ”œโ”€โ”€ filters/ # Filter processing โ”‚ โ””โ”€โ”€ opensearch_query/ # Main query builder โ”œโ”€โ”€ query/ # Query types and interfaces โ”œโ”€โ”€ osd_field_types/ # Field type system โ””โ”€โ”€ utils/ # Common utilities ``` ## ๐Ÿงช Testing ```bash # Run tests npm test # Test watch mode npm run test:watch ``` ## ๐Ÿ“ฆ Build ```bash # TypeScript compilation npm run build # Prepare for deployment npm run prepare ``` ## ๐Ÿค Contributing This project was extracted from the `src/plugins/data/common/index_patterns` module of OpenSearch Dashboard. ## ๐Ÿ“„ License This project is licensed under the Apache License 2.0. See the [LICENSE](LICENSE) file for details. ## ๐Ÿ™ Acknowledgments This library was extracted from the OpenSearch Dashboard project. Thanks to the OpenSearch community.