Skip to content

Add Quickwit entry#865

Open
alexey-milovidov wants to merge 2 commits intomainfrom
add-quickwit-entry
Open

Add Quickwit entry#865
alexey-milovidov wants to merge 2 commits intomainfrom
add-quickwit-entry

Conversation

@alexey-milovidov
Copy link
Copy Markdown
Member

Summary

Adds a benchmark entry for Quickwit, a Rust-based search engine for log analytics built on Tantivy. Modeled on the existing Elasticsearch entry.

Quickwit exposes an Elasticsearch-compatible REST API but no SQL endpoint, so each ClickBench query is hand-translated to ES DSL in `queries.json`. Loading goes through `/api/v1/_elastic/hits/_bulk`; querying through `/_search`.

19 of the 43 queries are not expressible in Quickwit's ES API and are recorded as `null`:

Reason Queries
`COUNT(DISTINCT)` — no `cardinality` aggregation 5, 6, 9, 10, 11, 12, 14, 23
Substring `LIKE '%…%'` — leading wildcards rejected, no `wildcard`/`regexp` query 21, 22, 24
`ORDER BY` on text field — sort by text not supported 26, 27
Scripted/runtime fields, `REGEXP_REPLACE`, `CASE WHEN`, integer arithmetic in aggregations 19, 28, 29, 30, 36, 40

The remaining 24 queries were validated against a 1M-row sample on a single c6a-class node (aarch64). The full 100M-row run was not executed in this PR; `results/` is empty pending a full benchmark run.

Test plan

  • `benchmark.sh` installs Quickwit 0.8.2 and starts the server (verified, aarch64 + x86_64 via `uname -m`)
  • Index creation from `index_config.yaml` succeeds (105 fields)
  • `load.py` ingests via the ES bulk API (~17K docs/s for the 1M sample)
  • All 43 entries in `queries.json` parse as valid JSON; `run.sh` emits 24 timings + 19 `null`s
  • Full 100M-row load and `results/c6a.4xlarge.json` (follow-up)

alexey-milovidov and others added 2 commits May 7, 2026 20:03
Quickwit (Rust, Tantivy-based) exposes an Elasticsearch-compatible REST API
but no SQL endpoint, so each ClickBench query is hand-translated to ES DSL
in queries.json. Loading goes through /api/v1/_elastic/hits/_bulk; querying
through /_search.

19 of the 43 queries are not expressible in Quickwit's ES API
(COUNT(DISTINCT), substring LIKE, scripted/runtime fields, REGEXP_REPLACE,
ORDER BY on text fields) and are recorded as null. The remaining 24 queries
were validated against a 1M-row sample on a single node.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Ubuntu 24.04 (the noble image used by run-benchmark.sh) refuses
"pip3 install --user requests" under PEP 668's externally-managed
environment, which aborted benchmark.sh after ~28s on c7a.metal-48xl.
The python3-requests apt package is available and sufficient.

Also drop the symlink "quickwit -> quickwit-v0.8.2" since the source
directory is itself named "quickwit", and reference the versioned dir
directly via $QW_DIR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant