quickwit-oss / quickwit-oss/quickwit

KQL Support

Open
#6,486 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
11.7k
Forks
597
Avg merge
2d 22h
Merged PRs (30d)
37

Description

My team comes from Azure Data Explorer / Microsoft Sentinel / Log Analytics, where
KQL (Kusto Query Language) is the native query language. Our analysts and SREs think
in KQL's pipe-based flow (source | where ... | summarize ... | project ...), and we
have a large library of saved queries, detections, and dashboards written in it.

Quickwit today exposes its own Lucene-style query mini-language and an
Elasticsearch-compatible DSL. Both are great for full-text filtering, but neither
maps cleanly onto the multi-stage transform-and-aggregate workflow KQL makes natural.
Porting existing KQL assets to Quickwit means rewriting everything by hand, which is a
major blocker to adopting Quickwit as a log/trace backend for teams already fluent in KQL.

Describe the solution you'd like
First-class KQL support, exposed as an additional query language (e.g. a
query_language=kql parameter on the existing search endpoints, or a dedicated
/kql endpoint) that parses KQL and translates it into Quickwit's internal
query + aggregation execution.

A useful initial subset, in rough priority order:

  • Filtering: where, search, time-range predicates
  • Shaping: project, project-away, extend, rename
  • Aggregation: summarize with count(), sum(), avg(), min()/max(),
    dcount(), and bin() for time bucketing — these map onto Quickwit's existing
    metric/bucket aggregations
  • Ordering & limiting: sort/order by, take/limit, top
  • String/scalar functions and case/iff as a later phase

Out-of-scope clauses (join, mv-expand, user-defined functions, etc.) could return
a clear "unsupported operator" error rather than silently misbehaving.

Example translations (KQL on the left, the Quickwit operation it would lower to on the right):

  1. Errors bucketed over time

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names the existing search endpoints, a possible /kql endpoint, and Quickwit's internal query and aggregation execution, but no files or tests. Start by tracing the existing search request path and aggregation support; done would mean a defined KQL subset translates correctly and unsupported operators return clear errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design, search
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.