Repository navigation
Conversation
Signed-off-by: Kelechi Oliver Azorji <kelechioliver96@gmail.com>
Signed-off-by: Kelechi Oliver Azorji <kelechioliver96@gmail.com>
…ane-dsl-opensearch-plugin Signed-off-by: Kelechi Oliver Azorji <kelechioliver96@gmail.com>
Signed-off-by: Kelechi Oliver Azorji <kelechioliver96@gmail.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Public API regressions and limit, validation, and search-construction defects remain unresolved.
Review effort: Balanced
Findings: 7
Open (8)
Reject explicit zero limits during Go decoding · New Preserve deprecated OpenSearchPPL type aliases · New Preserve deprecated OpenSearchPPLError compatibility export · New Reject decimal limits instead of truncating with parseInt · New Ensure configured limit overrides raw DSL size · New Use date for timestamp unmapped_type · New Preserve deprecated convertPPLToLogs export · New Document dashboard query language configuration · New
What changed in this PR
Adds SQL, Lucene, and Query DSL support to OpenSearch log queries across runtime, UI, schema, Go SDK, documentation, and tests.
Changes:
- Adds per-query language selection, limits, index validation, and time filtering.
- Adds SQL and
_searchclients plus response conversion. - Extends CUE/Go contracts and test coverage.
| File | Description |
|---|---|
opensearch/src/queries/opensearch-log-query/OpenSearchLogQueryEditor.tsx |
Adds language and limit controls. |
opensearch/src/queries/opensearch-log-query/OpenSearchLogQueryEditor.test.tsx |
Tests editor behavior. |
opensearch/src/queries/opensearch-log-query/OpenSearchLogQuery.tsx |
Defaults new queries to PPL. |
opensearch/src/queries/opensearch-log-query/opensearch-log-query-types.ts |
Defines languages and fields. |
opensearch/src/queries/opensearch-log-query/opensearch-log-query-types.test.ts |
Tests language resolution. |
opensearch/src/queries/opensearch-log-query/index.ts |
Exports builders and converters. |
opensearch/src/queries/opensearch-log-query/get-opensearch-log-data.ts |
Dispatches requests by language. |
opensearch/src/queries/opensearch-log-query/get-opensearch-log-data.test.ts |
Tests dispatch and conversion. |
opensearch/src/queries/opensearch-log-query/convert/parse-timestamp.ts |
Normalizes timestamp formats. |
opensearch/src/queries/opensearch-log-query/convert/index.ts |
Exports conversion utilities. |
opensearch/src/queries/opensearch-log-query/convert/hits-to-logs.ts |
Converts search hits to logs. |
opensearch/src/queries/opensearch-log-query/convert/hits-to-logs.test.ts |
Tests hit conversion. |
opensearch/src/queries/opensearch-log-query/convert/datarows-to-logs.ts |
Converts PPL/SQL rows. |
opensearch/src/queries/opensearch-log-query/build/sql.ts |
Builds SQL requests. |
opensearch/src/queries/opensearch-log-query/build/sql.test.ts |
Tests SQL requests. |
opensearch/src/queries/opensearch-log-query/build/search.ts |
Provides shared search helpers. |
opensearch/src/queries/opensearch-log-query/build/ppl.ts |
Extracts PPL request construction. |
opensearch/src/queries/opensearch-log-query/build/lucene.ts |
Builds Lucene search bodies. |
opensearch/src/queries/opensearch-log-query/build/lucene.test.ts |
Tests Lucene bodies. |
opensearch/src/queries/opensearch-log-query/build/index.ts |
Exports request builders. |
opensearch/src/queries/opensearch-log-query/build/dsl.ts |
Builds Query DSL bodies. |
opensearch/src/queries/opensearch-log-query/build/dsl.test.ts |
Tests Query DSL handling. |
opensearch/src/queries/constants.ts |
Adds language metadata and defaults. |
opensearch/src/model/opensearch-client.ts |
Adds SQL/search transports and errors. |
opensearch/src/model/opensearch-client.test.ts |
Tests transports and path safety. |
opensearch/src/model/opensearch-client-types.ts |
Adds shared response types. |
opensearch/src/datasources/opensearch-datasource/OpenSearchDatasourceEditor.tsx |
Allows new proxy endpoints. |
opensearch/src/datasources/opensearch-datasource/OpenSearchDatasource.tsx |
Exposes new client methods. |
opensearch/sdk/go/query/log/options.go |
Adds language and limit options. |
opensearch/sdk/go/query/log/log.go |
Extends and validates Go specs. |
opensearch/sdk/go/query/log/log_test.go |
Tests Go SDK additions. |
opensearch/schemas/queries/opensearch-log-query/tests/valid/sql.json |
Covers valid SQL. |
opensearch/schemas/queries/opensearch-log-query/tests/valid/ppl.json |
Covers explicit PPL. |
opensearch/schemas/queries/opensearch-log-query/tests/valid/no-language.json |
Covers legacy defaulting. |
opensearch/schemas/queries/opensearch-log-query/tests/valid/lucene.json |
Covers valid Lucene. |
opensearch/schemas/queries/opensearch-log-query/tests/valid/lucene-empty-query.json |
Covers blank Lucene queries. |
opensearch/schemas/queries/opensearch-log-query/tests/valid/dsl.json |
Covers valid Query DSL. |
opensearch/schemas/queries/opensearch-log-query/tests/invalid/zero-limit.json |
Rejects zero limits. |
opensearch/schemas/queries/opensearch-log-query/tests/invalid/unknown-language.json |
Rejects unknown languages. |
opensearch/schemas/queries/opensearch-log-query/tests/invalid/sql-empty-query.json |
Rejects empty SQL. |
opensearch/schemas/queries/opensearch-log-query/tests/invalid/negative-limit.json |
Rejects negative limits. |
opensearch/schemas/queries/opensearch-log-query/tests/invalid/lucene-without-index.json |
Requires Lucene index. |
opensearch/schemas/queries/opensearch-log-query/tests/invalid/dsl-without-index.json |
Requires Query DSL index. |
opensearch/schemas/queries/opensearch-log-query/query.cue |
Defines the expanded schema. |
opensearch/README.md |
Advertises supported languages. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Hi @Oliver-ke, |
…ane-dsl-opensearch-plugin # Conflicts: # opensearch/src/datasources/opensearch-datasource/OpenSearchDatasource.tsx # opensearch/src/model/opensearch-client.ts
Signed-off-by: Kelechi Oliver Azorji <kelechioliver96@gmail.com>
…ane-dsl-opensearch-plugin
Signed-off-by: Kelechi Oliver Azorji <kelechioliver96@gmail.com>
@ibakshay fixes applied, kindly review |


Description
The OpenSearch log query could only be written in PPL. This PR adds a per-query Query language selector with four options:
POST /_plugins/_pplsource=)POST /_plugins/_sqlFROMclausePOST /{index}/_searchquery_stringquery. An empty query returns everything in the time rangePOST /{index}/_search_searchbody. The time range is added to itThe dashboard time range is added automatically for every language, unless Disable automatic time filtering is ticked. Lucene and Query DSL also get an optional Limit field, which sets
size(default 500). All four languages return the sameLogDatashape, so logs panels treat them the same.Changes
queryLanguage(ppl|sql|lucene|dsl, defaultppl) andlimit.indexis now required forluceneanddsl.querymay be empty only forlucene. There are new valid and invalid schema test files for each language.QueryLanguage,IndexandLimitoptions, with validation that matches the schema.sql()andsearch()calls next toppl(). The index in the_searchURL is checked against an allowlist of characters, so it can't be used for path traversal./_plugins/_sqland/.*/_searchas well as/_plugins/_ppl._searchhits are converted to log entries. Nested_sourcefields are flattened to dot-separated labels, and_idand_indexare added as labels.hasMoreis set when OpenSearch stopped counting or the result was cut off bysize. Numeric epoch timestamps in seconds, milliseconds, microseconds or nanoseconds are recognised, including fractional ones.allowedEndpointsScreenshots
Checklist
[<catalog_entry>] <commit message>naming convention using one of thefollowing
catalog_entryvalues:FEATURE,ENHANCEMENT,BUGFIX,BREAKINGCHANGE,DOC,IGNORE.UI Changes