The Query Enhancements plugin extends OpenSearch Dashboards' query capabilities by adding support for additional query languages and improving the search experience.
- Custom Search Strategies: Adds support for PPL (Piped Processing Language) and SQL search strategies.
- Custom API Routes: Defines new routes for query-related operations.
- OpenSearch Client Enhancement: Creates a custom OpenSearch client with additional plugins.
- Language Support: Adds support for PPL and SQL languages in the query editor.
- Query Assist: Implements a query assist feature to help users construct queries.
- S3 Integration: Adds support for querying S3 data sources.
- Enhanced Query Editor: Provides an improved query editor with language-specific features.
The plugin sets up several components during the setup
phase:
- Registers PPL and SQL search strategies.
- Sets up custom route handler contexts.
- Defines plugin-specific routes.
Example usage in a plugin:
class MyServerPlugin {
setup(core, plugins) {
// Access query enhancements features
const { search } = plugins.data;
// Use PPL or SQL search strategies
const results = await search.search(request, { strategy: 'ppl' });
}
}
The plugin sets up several components during the setup phase:
- Registers PPL and SQL language configurations.
- Sets up query assist extension.
- Registers S3 dataset type.
Example usage in a plugin:
class MyClientPlugin {
setup(core, plugins) {
// Access query string manager
const { queryString } = plugins.data.query;
// Use PPL or SQL languages
queryString.setQuery({
language: 'PPL',
query: 'source = my_index | where count > 100'
});
}
}
The Query String Manager provides methods to manage and interact with queries:
setQuery(query: Query)
: Set the current query.getQuery()
: Query: Get the current query.getLanguageService()
: Access language-specific services.
The Dataset Service allows interaction with different data sources:
registerType(typeConfig: DatasetTypeConfig)
: Register a new dataset type.getType(type: string)
: DatasetTypeConfig: Get a registered dataset type.
PPL is a query language that uses a series of commands separated by pipes (|) to process and transform data. Example PPL query:
source = my_index | where count > 100 | stats sum(price) by category
SQL support allows users to query data using standard SQL syntax. Example SQL query:
SELECT category, SUM(price) FROM my_index WHERE count > 100 GROUP BY category