quickwit-oss / quickwit-oss/quickwit

support being the backend for OpenSearch Dashboards

Open
#5,222 4 comments 11 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

endpoints opensearch dashboards uses:

  • GET /_nodes => support getting some information about cluster. Could be mocked for a MVP
  • GET /_alias/<name> => report whether an alias exists
  • PUT /<name> => create index, we need this for .kibana_1, but also for opensearch_dashboards_sample_data_logs&co (loading sample data, which is for all intent and purpose a normal index). for .kibana, it uses features we don't support (nested fields at least)
  • POST /_aliases => create an alias (from .kibana to .kibana_1 mostly)
  • * /.kibana* => these indexes will need to be handled out of the normal index flow: we need to support document update & co
    • GET _doc/<doc_id> => return doc by id
    • DELETE _doc/<doc_id> => delete doc by id
    • PUT _create/<doc_id>?refresh=wait_for => create doc with id
    • POST _update/<doc_id>?refresh=wait_for&_source_includes=.* => update existing doc
    • POST _search => normal search (on a not so normal index), some queries use nested fields :-/
    • GET _refresh => probably a no-op (every call will be sequentially consistent)
    • GET count => return number of docs in index
  • ANY /_plugins/.* => i hope we can mock/not implement these. osd seems fine with at least some returning 400.
  • POST /_bulk => in most case unchanged, but we need to support writing to .kibana (we may want to forbid writing in kibana and anything else)
  • HEAD/GET /<name> => verify index exists
  • POST /_mget => get multiple docs by id (only for .kibana)
  • GET /_cat/templates/* => report no template exists
  • GET /_cat/plugins?* => report no plugin exists?
  • GET /_resolve/index/* => already exists, plug .kibana indexes inside

note: all sample have geo data we don't support, we should see to fail as gracefully as possible, it would be nice for everything else to keep working

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

Start from the existing /_resolve/index/* handling and the normal index flow, then trace how the listed OpenSearch Dashboards endpoints are routed. Implementing this requires deciding how .kibana*, aliases, bulk operations, plugins, and unsupported geo data should behave. Done means the listed dashboard and sample-data operations work or fail gracefully.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.