Mach5 Search v7.1.0 - Migration Guide
This guide provides the upgrade steps and compatibility notes for moving an existing Mach5 Search deployment from v6.2.0 to v7.1.0. Review the v7.1.0 release notes before starting the upgrade.
If you are upgrading from v6.1.0 or an earlier release, review the v6.2.0 migration guide and the v4.7.0-to-v6.1.0 migration guide for requirements that continue to apply.
Prerequisites
- Confirm that the current deployment is healthy before upgrading.
- Export the current Helm values and rendered manifests.
- Back up deployment configuration and customer data according to your environment’s recovery plan.
- Ensure ingest pipelines are paused, or confirm that the upgrade window tolerates ingestion interruption.
- Review direct service calls, OpenSearch integrations, dashboards, saved queries, and automation for the compatibility changes below.
- Review the system warehouse sizing and storage requirements before enabling the v7.1 defaults.
OpenSearch Compatibility
The legacy Java OpenSearch deployment (opensearch-legacy) is removed in v7.1. The /opensearch endpoint is served by MDX’s OpenSearch-compatible API.
Before upgrading, identify integrations that depend on Java OpenSearch plugins or implementation-specific behavior. Search, bulk, scrolling, aliases, aggregations, analyzers, highlighting, dashboards, and saved searches may behave differently where the native compatibility layer and Java OpenSearch previously differed.
The compatibility layer supports additional administrative, search, update, analysis, statistics, and template APIs. Unsupported operations return clearer client errors instead of generic server errors. Test the OpenSearch operations used by your applications and dashboards before completing the production upgrade.
System Warehouse and Diagnostics
The system warehouse and diagnostics receiver are enabled by default in v7.1. Helm bootstrap creates or reconciles a warehouse in the fixed _system namespace. This creates additional system-managed data, telemetry, diagnostics, and storage activity.
The relevant values are:
systemWarehouse:
enabled: true
name: default
config:
resource:
num_mediators: 1
enabled: true
memory_policy: legacy
diagnosticsreceiver:
enabled: true
systemWarehouse.config is sent to the Warehouse API as JSON. Extend it with the warehouse sizing, storage, placement, engine, or other settings required by the customer environment. The bootstrap creates or reconciles the warehouse in _system; it does not create it in the customer default namespace.
To disable Helm management of the system warehouse and diagnostics receiver, use:
systemWarehouse:
enabled: false
diagnosticsreceiver:
enabled: false
If the system warehouse is disabled, confirm that the environment does not depend on system diagnostics, query auditing, metadata auditing, or runtime diagnostic data being collected by this deployment.
API and Query Compatibility
The following v6.2 requirements continue to apply after upgrading to v7.1.
Direct service authorization
Direct calls to backend services must include the X-Mach5-Authorization header. Missing authorization no longer implies administrator access.
For example:
curl -sS -X POST \
"http://<warehouse-opensearch-service-host>:<opensearch-port>/<index>/_search" \
-H 'Content-Type: application/json' \
-H 'X-Mach5-Authorization: ["admin"]' \
-d '{"size":10,"query":{"match_all":{}}}'
Audit scripts, probes, port-forwarded clients, tests, and integrations that call msearchserver, mdserver, weaveserver, mcpserver, warehouse OpenSearch, or other backend services directly. Calls through the normal nginx/authentication path do not require this direct-service change.
Multi-field projection
Multi-fields remain supported; however, after upgrading, SELECT * and KQL project-all no longer include them automatically. Multi-fields must be projected explicitly.
For an index containing manufacturer.keyword:
SELECT manufacturer, manufacturer.keyword
FROM products
LIMIT 10;
products
| project manufacturer, manufacturer.keyword
| limit 10
Update dashboards, saved queries, tests, and scripts that depended on multi-fields being present in SELECT * or project-all results. This also applies to nested multi-fields such as product.category.keyword.
Warehouses, Autoscaling, and Placement
v7.1 adds autoscaling, shared warehouses, namespace-level warehouse attachment, and placement controls. Review the following before upgrading:
- Workload distribution across shared warehouse capacity.
- Resource and admission priorities.
- Worker placement and node-selection behavior.
- Autoscaling limits, latency expectations, and infrastructure cost.
- Existing warehouse state and namespace attachments.
Existing warehouses are adopted where possible during startup instead of being recreated. Existing resource state therefore affects upgrade behavior. Compare rendered Helm values and the Warehouse API state before and after the upgrade.
Indexing, Mappings, and Partitioning
Mapping limits are enforced more consistently, and partition-aware indexing and query execution are expanded. Review indexes that use:
- Large numbers of fields or very long field names.
- Strict mappings or nested fields.
- Multi-valued fields.
- Custom routing or partitioning.
Documents or mappings that were previously accepted may now be rejected when they exceed configured limits. Validate representative writes and queries after upgrading.
Data Assets and Package Lifecycle
Data-asset mapping and package installation workflows preserve more lifecycle state across retries, restarts, updates, failures, and recovery operations.
Review installation, update, uninstallation, rollback, mapping-change, refresh, and synchronization procedures. The improved lifecycle state is more visible in operational behavior and metadata usage; update runbooks and monitoring expectations accordingly.
Kafka and Protobuf Ingestion
Kafka Protobuf ingestion is already supported in v6.2.0 and remains supported in v7.1. This is not a new 7.1 capability; validate existing Protobuf pipelines during the upgrade. Protobuf pipelines require:
- A compiled Protobuf
FileDescriptorSet, not only a raw.protofile. - The fully qualified top-level message type.
- Kafka record values that match the descriptor and selected message type.
- Explicit unwrap targets when bytes fields contain nested serialized Protobuf messages.
Review existing Kafka pipelines and test descriptor, decoder, field-mapping, and pipeline behavior after the upgrade. Existing non-Protobuf Kafka formats remain supported.
Security and Secret Handling
Authorization is stricter and more comprehensive, particularly for MCP/agentic tools and administrative OpenSearch operations. Review permissions for indexes, warehouses, data assets, dashboards, workflows, notebooks, scripts, and connections.
Cloud credentials in dynamically created workloads are protected through secret references rather than direct secret exposure. Check workload definitions, environment descriptions, and operational tooling for assumptions that credentials are present as plain values.
Compaction, Ingestion, and Backpressure
Compaction and ingestion provide stronger admission control, auditing, and operational diagnostics. Under resource pressure, write requests may be delayed or rejected with a backpressure response.
Review clients and monitoring for retry behavior, delayed writes, rejected writes, and compaction state. This behavior is intended to reduce system instability during sustained ingestion or compaction pressure.
Local and Single-Node Deployments
The local and single-node deployment model is more closely aligned with the Kubernetes deployment model. Behavior can still differ between local and Kubernetes environments for profiling, storage backends, external services, and controller-managed operations.
The local runtime has a smaller default storage-backend footprint than the distributed deployment. Validate local storage, external service dependencies, and any deployment-specific assumptions separately.
Upgrade Procedure
Authenticate to the OCI registry and pull the v7.1.0 chart:
cat reader-key.json | helm registry login https://us-central1-docker.pkg.dev -u _json_key --password-stdin
helm pull oci://us-central1-docker.pkg.dev/mach5-dev/mach5-docker-registry/mach5-search \
--version $version
Render the chart with the production values before applying it:
helm template <mach5-release-name> mach5-search-7.1.0.tgz \
-n <mach5-namespace> \
-f values.yaml > rendered-mach5-7.1.0.yaml
Review the rendered output for OpenSearch deployment changes, system warehouse and diagnostics settings, warehouse configuration, secrets, and service endpoints.
Upgrade the deployment:
helm upgrade --install <mach5-release-name> mach5-search-7.1.0.tgz \
-n <mach5-namespace> \
-f values.yaml \
--wait
Post-upgrade Validation
After the upgrade:
- Confirm all expected pods and services are ready.
- Confirm
/opensearchresponds through the MDX compatibility layer. - Verify the system warehouse in the
_systemnamespace when enabled. - Confirm diagnostics and system records are being collected as expected.
- Run representative OpenSearch, SQL, KQL, aggregation, and multi-field queries.
- Verify direct backend calls include
X-Mach5-Authorization. - Run representative Kafka pipelines, including Protobuf pipelines where used.
- Check warehouse autoscaling, placement, namespace attachment, and admission behavior.
- Verify dashboards, saved searches, notebooks, workflows, data assets, and package lifecycle operations.
- Confirm ingestion, compaction, backpressure, retries, and alerting behave as expected.
Use the v7.1.0 Quickstart and Helm Charts documentation for deployment-specific checks.