Skip to content

[v1.38] Document runtime property reindex#427

Open
g-despot wants to merge 6 commits into
v1-38/mainfrom
v1-38/runtime-reindex
Open

[v1.38] Document runtime property reindex#427
g-despot wants to merge 6 commits into
v1-38/mainfrom
v1-38/runtime-reindex

Conversation

@g-despot
Copy link
Copy Markdown
Contributor

@g-despot g-despot commented May 26, 2026

Summary

Documents the new v1.38 Preview runtime-reindex endpoints. Lets users alter inverted-index configuration on a populated collection without restart — add or rebuild filterable / searchable / range indexes, change tokenization, migrate BM25 from WAND to BlockMax — while reads stay available and writes keep flowing.

Replaces the long-standing placeholder "We are working on a re-indexing API… available in a future release" and complements the staged v1.30 BlockMax migration guide.

Companion to weaviate/weaviate#11326 (server PR).

Documentation approach

Rather than a standalone page, the content is distributed across the existing inverted-index pages by altitude, so each topic lives next to the related material readers already navigate to:

  • How-tomanage-collections/inverted-index.mdx gets a new ## Reindex a property on a collection (v1.38+) section (add index, change tokenization, migrate BM25, rebuild/repair, cancel, check status) beside the existing enable/drop/tokenization how-tos.
  • Referenceconfig-refs/indexing/inverted-index.mdx gets a ## Runtime reindex (v1.38 Preview) reference: endpoints, request-body shapes, status values, concurrency, multi-tenancy rules, error codes, and required permissions.
  • Conceptconcepts/indexing/inverted-index.md gets a ### Changing an index after import subsection explaining the non-destructive, restart-safe, schema-flag-as-source-of-truth model.

There is no new standalone page and no new sidebar entry — the operations are discoverable from the existing "Inverted index" how-to entry.

What's documented

Two genuinely new REST endpoints, plus a new MutationGuard contract on an existing one:

Method Path Status
PUT /v1/schema/{class}/indexes/{property} New — submit a migration (the body shape selects the verb)
GET /v1/schema/{class}/indexes New — per-property status
DELETE /v1/schema/{class}/properties/{property}/index/{indexName} Existed already; v1.38 adds MutationGuard rejection while a reindex is in flight on the same property

REST-only for v1.38 Preview. None of the Python / TypeScript / Java / C# / Go clients have shipped typed methods yet — verified against each client's source. Client tabs can land in follow-up PRs as support ships.

Verbs covered

  • Add a missing inverted index ({"filterable":{"enabled":true}}, etc.)
  • Change tokenization on a populated text property (with the filterable + searchable co-retokenize rule)
  • One-way WAND → BlockMax BM25 migration
  • Rebuild / repair a bucket
  • Cancel an in-flight migration (with the CANCELLED vs NO_OP response)
  • Check migration status (the status table — ready / pending / indexing / failed / cancelled)
  • Multi-tenancy scoping (?tenants=... rules table)
  • Concurrency limits (per-(class, property) exclusivity + 32-unit-per-class cap)
  • What's blocked during a reindex
  • Errors and recovery (400 / 404 / 409 / 429 / 503)
  • Auth requirements

Files

New

  • _includes/feature-notes/runtime-reindex.mdx:::caution Preview — added in v1.38 admonition with the v1.38 backup-interaction warning.

Updated

  • docs/weaviate/manage-collections/inverted-index.mdx — new ## Reindex a property on a collection (v1.38+) how-to section; :::tip callout at the top; :::note v1.38+ MutationGuard on the existing "Drop an inverted index" section.
  • docs/weaviate/config-refs/indexing/inverted-index.mdx — new ## Runtime reindex (v1.38 Preview) reference; expanded "Drop an inverted index" reference with the explicit REST path and MutationGuard contract; updated the stale "re-indexing API… future release" note.
  • docs/weaviate/concepts/indexing/inverted-index.md — new ### Changing an index after import conceptual subsection; updated the BlockMax migration note to point at the runtime endpoint.
  • docs/weaviate/manage-collections/collection-operations.mdx — replaced the "available in a future release" placeholder with a list distinguishing the v1.38+ runtime path from the legacy export/recreate workaround.
  • docs/weaviate/concepts/filtering.md — noted that from v1.38 an existing property can gain a rangeable index via runtime reindex (previously stated as impossible).

Test plan

  • yarn build clean (only the pre-existing unrelated hnsw_startup_wait_for_vector_cache anchor warning remains).
  • All in-doc cross-links and anchors resolve.
  • Verified no client library has typed reindex methods yet (Python weaviate-client, TS weaviate-client, Java client6, C# Weaviate.Client, Go weaviate-go-client).
  • Live verification of the curl examples against a v1.38 Preview server image — to run before merge.
  • Spot-check the :::caution backup-interaction warning is still accurate at the time of release.

Follow-up

  • Client-library tabs as each client ships typed methods for the new endpoints.
  • Drop the preview admonition + backup caveat from runtime-reindex.mdx when the feature GAs.

Copy link
Copy Markdown

@orca-security-eu orca-security-eu Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Orca Security Scan Summary

Status Check Issues by priority
Passed Passed Infrastructure as Code high 0   medium 0   low 0   info 0 View in Orca
Passed Passed SAST high 0   medium 0   low 0   info 0 View in Orca
Passed Passed Secrets high 0   medium 0   low 0   info 0 View in Orca
Passed Passed Vulnerabilities high 0   medium 0   low 0   info 0 View in Orca

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR documents the v1.38 Preview runtime reindex capability for inverted indexes, adding how-to and reference coverage for REST-only reindex operations while updating related inverted-index guidance.

Changes:

  • Adds runtime reindex documentation for add/change/rebuild/cancel/status workflows and endpoint semantics.
  • Updates existing collection/indexing pages to replace the old export/recreate-only guidance for v1.38+.
  • Updates release/version-related configuration and adds a shared preview admonition.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
versions-config.json Bumps local Weaviate version metadata to 1.38.0.
docusaurus.config.js Points Scalar API reference to the v1.38 OpenAPI spec branch.
docs/weaviate/manage-collections/inverted-index.mdx Adds runtime reindex how-to content and MutationGuard note.
docs/weaviate/manage-collections/collection-operations.mdx Updates post-import indexing guidance for v1.38+ runtime reindex.
docs/weaviate/config-refs/indexing/inverted-index.mdx Adds runtime reindex endpoint/reference details and updates old reindex placeholder guidance.
docs/weaviate/concepts/indexing/inverted-index.md Adds conceptual guidance for live reindexing and BlockMax migration.
_includes/feature-notes/runtime-reindex.mdx Adds shared preview caution for runtime reindex.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.


These operations cover **inverted indexes only** (`IndexFilterable`, `IndexSearchable`, `IndexRangeFilters`, BM25 algorithm, tokenization). Vector indexes are configured separately — see [Vector configuration](./vector-config.mdx).

The feature is **REST-only** for the v1.38 Preview — there is no client-library support yet, so the examples below use `curl`. All examples assume `$WEAVIATE` is the cluster URL and `$TOKEN` is an API key with `UPDATE` on `Collections`. For the endpoint list, request-body reference, status values, concurrency rules, error codes, and required permissions, see [References: Runtime reindex](../config-refs/indexing/inverted-index.mdx#runtime-reindex-v138-preview).
Comment on lines +397 to +400
until curl -fsS "$WEAVIATE/v1/schema/Article/indexes" \
| jq -e '.properties[] | select(.name=="body")
| .indexes[] | select(.type=="searchable")
| .status == "ready"' > /dev/null
Comment on lines +323 to +326
| Multi-tenant | omitted | format-only (`rebuild`, `repair`, `enable-rangeable`) | targets all tenants |
| Multi-tenant | omitted | semantic (`change-tokenization*`, `enable-*`) | targets all tenants (the schema flip is cluster-wide) |
| Multi-tenant | provided | format-only | targets the named subset |
| Multi-tenant | provided | semantic | `400` — semantic migrations cannot be sub-scoped |

These operations cover **inverted indexes only** (`IndexFilterable`, `IndexSearchable`, `IndexRangeFilters`, BM25 algorithm, tokenization). Vector indexes are configured separately — see [Vector configuration](./vector-config.mdx).

The feature is **REST-only** for the v1.38 Preview — there is no client-library support yet, so the examples below use `curl`. All examples assume `$WEAVIATE` is the cluster URL and `$TOKEN` is an API key with `UPDATE` on `Collections`. For the endpoint list, request-body reference, status values, concurrency rules, error codes, and required permissions, see [References: Runtime reindex](../config-refs/indexing/inverted-index.mdx#runtime-reindex-v138-preview).
Comment on lines +397 to +400
until curl -fsS "$WEAVIATE/v1/schema/Article/indexes" \
| jq -e '.properties[] | select(.name=="body")
| .indexes[] | select(.type=="searchable")
| .status == "ready"' > /dev/null
Comment on lines +323 to +326
| Multi-tenant | omitted | format-only (`rebuild`, `repair`, `enable-rangeable`) | targets all tenants |
| Multi-tenant | omitted | semantic (`change-tokenization*`, `enable-*`) | targets all tenants (the schema flip is cluster-wide) |
| Multi-tenant | provided | format-only | targets the named subset |
| Multi-tenant | provided | semantic | `400` — semantic migrations cannot be sub-scoped |
</TabItem>
</Tabs>

## Reindex a property on a collection (v1.38+)
|---|---|
| `{"filterable":{"enabled":true}}` | Creates a `RoaringSet` bucket and flips `IndexFilterable=true`. |
| `{"searchable":{"enabled":true,"tokenization":"word"}}` | Creates a BlockMax searchable bucket, sets `Tokenization`, flips `IndexSearchable=true`. Requires `text` / `text[]`. |
| `{"rangeable":{"enabled":true}}` | Creates a `RoaringSetRange` bucket and flips `IndexRangeFilters=true`. Numeric types only (`int`, `number`, `date`). |
- Note the status token also needs READ on CollectionsMetadata
- Add Authorization header to the status poll-loop example
- Disambiguate enable-rangeable as format-only in the multi-tenancy table
- Update filtering.md: existing properties can gain a rangeable index from v1.38

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@g-despot g-despot changed the base branch from main to v1-38/main May 31, 2026 18:35
Confirmed against weaviate IsSemanticMigration(): change-algorithm
(WAND -> BlockMax) is a semantic migration and cannot be tenant-scoped,
while enable-rangeable is intentionally format-only and can be.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@orca-security-eu orca-security-eu Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Orca Security Scan Summary

Status Check Issues by priority
Passed Passed Secrets high 0   medium 0   low 0   info 0 View in Orca

g-despot and others added 2 commits May 31, 2026 20:41
Reword user-facing reindex content to drop internal concepts that
users shouldn't need to know: storage buckets (RoaringSet/RoaringSetRange/
BlockMax buckets), internal schema-flag names, the schema FSM, replicas/
barrier groups, object storage, task-ID encoding, and finalize/drain
timing. Describe observable behavior instead.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remove (v1.38+) / (v1.38 Preview) from the two reindex headings and
update all cross-link anchors accordingly. The preview admonition at the
start of each section already conveys the version.

Co-Authored-By: Claude Opus 4.8 (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.

2 participants