fix: use .keyword suffix for text field sorting in OpenSearch
All checks were successful
CI / build (push) Successful in 1m22s
CI / cleanup-branch (push) Has been skipped
CI / docker (push) Successful in 44s
CI / deploy (push) Successful in 39s
CI / deploy-feature (push) Has been skipped

OpenSearch dynamically maps string fields as text with a .keyword
subfield. Sorting on text fields throws an error; only .keyword,
date, and numeric fields support sorting. Add .keyword suffix to
all string sort columns (status, routeId, agentId, executionId,
correlationId, applicationName) while keeping start_time and
duration_ms as-is.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-03-24 17:56:18 +01:00
parent b7cac68ee1
commit 6fea5f2c5b

View File

@@ -59,16 +59,17 @@ public record SearchRequest(
"durationMs", "executionId", "applicationName"
);
/** Maps camelCase API sort field names to snake_case OpenSearch/DB column names. */
/** Maps camelCase API sort field names to OpenSearch field names.
* Text fields use .keyword subfield; date/numeric fields are used directly. */
private static final java.util.Map<String, String> SORT_FIELD_TO_COLUMN = java.util.Map.ofEntries(
java.util.Map.entry("startTime", "start_time"),
java.util.Map.entry("status", "status"),
java.util.Map.entry("agentId", "agent_id"),
java.util.Map.entry("routeId", "route_id"),
java.util.Map.entry("correlationId", "correlation_id"),
java.util.Map.entry("durationMs", "duration_ms"),
java.util.Map.entry("executionId", "execution_id"),
java.util.Map.entry("applicationName", "application_name")
java.util.Map.entry("status", "status.keyword"),
java.util.Map.entry("agentId", "agent_id.keyword"),
java.util.Map.entry("routeId", "route_id.keyword"),
java.util.Map.entry("correlationId", "correlation_id.keyword"),
java.util.Map.entry("executionId", "execution_id.keyword"),
java.util.Map.entry("applicationName", "application_name.keyword")
);
public SearchRequest {