https://github.com/snetsystems/dsl-builder
This module is what convert from KQL or Lucene language to DSL.
https://github.com/snetsystems/dsl-builder
Last synced: 4 months ago
JSON representation
This module is what convert from KQL or Lucene language to DSL.
- Host: GitHub
- URL: https://github.com/snetsystems/dsl-builder
- Owner: snetsystems
- License: apache-2.0
- Created: 2025-06-25T08:12:36.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-09-10T00:48:12.000Z (9 months ago)
- Last Synced: 2025-09-10T04:02:27.995Z (9 months ago)
- Language: TypeScript
- Size: 202 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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.