quickwit-oss / quickwit-oss/quickwit

Problems with IngestV2 on existing indexes after Update Quickwit from 0.8 to 0.9

Open
#6,691 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

Describe the bug
A clear and concise description of what the bug is.

After Upgrade Quickwit to Version 0.9, ingestv2 has problems with existing indexes.

Before the update stopped ingest and created the backups of the metastore (RDS Postgres)
The Update itself was executed like described in the Upgrade Guide and didn't show any errors.

We use Vector.dev to do the log ingest and transformation.
After start ingest again we got errors like this from quickwit:

2026-08-13T14:06:01.781Z INFO index-doc-batches{index_id=aws-r53-vpc-dns-logs-v0_7 source_id=_ingest-source pipeline_uid=01KZXPHNWDJPX3V6HM3THZGWC8 workbench_id=01KZXQ1KAVA6XBGE6N4ADD0BYV}:publisher{split_update=SplitsUpdate { index_id: "aws-r53-vpc-dns-logs-v0_7", new_splits: "01KZXQ1KAXR1EZVZTFZK85MGKR", checkpoint_delta: Some(_ingest-source:∆(01KZXPHNW5G7S9VJZ6HPZDHSN
M:(00000000000000156859..00000000000000165480])) }}: quickwit_indexing::actors::log_publisher_impl: publish-new-splits num_splits=1 num_docs=8621 split_size_bytes=655075
2026-08-13T14:06:02.725Z INFO ingest.ingester.truncate_shards:ingester.truncate_shard: quickwit_ingest::ingest_v2::state: truncated shard aws-r53-vpc-dns-logs-v0_7:01JT0KZ21XHVHWT520FMCGS5NK/_ingest-source/01KZXPHNW5G7S9VJZ6HPZDHSNM at 00000000000000165480 initiated via indexer RPC
2026-08-13T14:06:54.508Z ERROR http_request{otel.kind="Server" http.request.method=POST url.path=/api/v1/aws-cloudtrail-logs-v0_7/ingest}:ingest.router.ingest{commit_type=1}:ingest.ingester.persist{leader_id=prod-quickwit-indexer-0 commit_type=1}:ingester.validate_doc_batch{num_docs=5350 num_bytes=10020192}: quickwit_ingest::ingest_v2::doc_mapper: failed to validate JSON document: the document must contain field "timestamp field is required" num_suppressed=173405
2026-08-13T14:06:54.508Z ERROR http_request{otel.kind="Server" http.request.method=POST url.path=/api/v1/aws-cloudtrail-logs-v0_7/ingest}:ingest.router.ingest{commit_type=1}:ingest.ingester.persist{leader_id=prod-quickwit-indexer-0 commit_type=1}:ingester.validate_doc_batch{num_docs=5350 num_bytes=10020192}: quickwit_ingest::ingest_v2::doc_mapper: failed to validate JSON document: the document must contain field "timestamp field is required"
2026-08-13T14:06:54.508Z ERROR http_request{otel.kind="Server" http.request.method=POST url.path=/api/v1/aws-cloudtrail-logs-v0_7/ingest}:ingest.router.ingest{commit_type=1}:ingest.ingester.persist{leader_id=prod-quickwit-indexer-0 commit_type=1}:ingester.validate_doc_batch{num_docs=5350 num_bytes=10020192}: quickwit_ingest::ingest_v2::doc_mapper: failed to validate JSON document: the document must contain field "timestamp field is required"
2026-08-13T14:06:54.508Z ERROR http_request{otel.kind="Server" http.request.method=POST url.path=/api/v1/aws-cloudtrail-logs-v0_7/ingest}:ingest.router.ingest{commit_type=1}:ingest.ingester.persist{leader_id=prod-quickwit-indexer-0 commit_type=1}:ingester.validate_doc_batch{num_docs=5350 num_bytes=10020192}: quickwit_ingest::ingest_v2::doc_mapper: failed to validate JSON document: the document must contain field "timestamp field is required"
2026-08-13T14:06:54.508Z ERROR http_request{otel.kind="Server" http.request.method=POST url.path=/api/v1/aws-cloudtrail-logs-v0_7/ingest}:ingest.router.ingest{commit_type=1}:ingest.ingester.persist{leader_id=prod-quickwit-indexer-0 commit_type=1}:ingester.validate_doc_batch{num_docs=5350 num_bytes=10020192}: quickwit_ingest::ingest_v2::doc_mapper: failed to validate JSON document: the document must contain field "timestamp field is required"
2026-08-13T14:06:54.508Z ERROR http_request{otel.kind="Server" http.request.method=POST url.path=/api/v1/aws-cloudtrail-logs-v0_7/ingest}:ingest.router.ingest{commit_type=1}:ingest.ingester.persist{leader_id=prod-quickwit-indexer-0 commit_type=1}:ingester.validate_doc_batch{num_docs=5350 num_bytes=10020192}: quickwit_ingest::ingest_v2::doc_mapper: failed to validate JSON document: the document must contain field "timestamp field is required"

Or:
2026-08-13T14:42:57.228Z ERROR http_request{otel.kind="Server" http.request.method=POST url.path=/api/v1/aws-vpcflowlogs-v5-v0_7/ingest}:ingest.router.ingest{commit_type=1}:ingest.ingester.persist{leader_id=prod-quickwit-indexer-0 commit_type=1}:ingester.validate_doc_batch{num_docs=11496 num_bytes=8012859}: quickwit_ingest::ingest_v2::doc_mapper: failed to validate JSON document: the field version could not be parsed: expected string, got 5
2026-08-13T14:42:57.228Z ERROR http_request{otel.kind="Server" http.request.method=POST url.path=/api/v1/aws-vpcflowlogs-v5-v0_7/ingest}:ingest.router.ingest{commit_type=1}:ingest.ingester.persist{leader_id=prod-quickwit-indexer-0 commit_type=1}:ingester.validate_doc_batch{num_docs=11496 num_bytes=8012859}: quickwit_ingest::ingest_v2::doc_mapper: failed to validate JSON document: the field version could not be parsed: expected string, got 5

The log format hasnt changed and the fields mentioned in the errors are defined in the index config.

The cloudtrail index is type dynamic and the vpcflowlogs is type strict

We couldnt ingest any data until we forced quickwit to use ingestv1 by adding the "?use_legacy_ingest=true" to the vector sink.

qw_aws_cloudtrail:
  type: http
  method: post
  inputs:
    - split_cloudtrail
  encoding:
    codec: "json"
  framing:
    method: "newline_delimited"
  uri: "http://prod-quickwit-indexer.quickwit.svc.cluster.local:7280/api/v1/aws-cloudtrail-logs-v0_7/ingest?use_legacy_ingest=true"

Then those error messages were gone and we were able to ingest again.

Steps to reproduce (if applicable)
Steps to reproduce the behavior:

  1. Create Indexes with Quickwit 0.8 and ingest data.
  2. Upgrade Quickwit to 0.9 and ingest data with now default IngestV2 API

Expected behavior
A clear and concise description of what you expected to happen.

existing Indexes work with Ingestv2 and quickwit 0.9 as well after Upgrade.

Configuration:
Please provide:

  1. Output of quickwit --version --> Quickwit 0.9.0 (aarch64-unknown-linux-gnu 2026-07-25T17:48:09Z cc420c3

  2. AWS EKS 1.35, Quickwit helmchart 0.8.14, AWS RDS Postgres 16.13 Metastore

  3. one Indexer and Searcher Node

  4. Ingest with vector.dev

  5. The index_config.yaml

I got an error (Failed to upload ), if i try to upload the index config yaml to github

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 with the IngestV2 API at /api/v1/{index}/ingest and the quickwit_ingest::ingest_v2::doc_mapper errors described in the logs. Reproduce an upgrade from Quickwit 0.8 to 0.9 using existing indexes, compare dynamic timestamp validation and strict version parsing with legacy ingest, and verify that IngestV2 accepts the existing data without requiring use_legacy_ingest=true.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, helm, kubernetes, postgresql, rust
Domain
api, backend, cloud, databases, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.