From befefe457f9ddc40a632c61207de32ab55b59b3d Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Thu, 26 Mar 2026 10:40:42 +0100 Subject: [PATCH] fix: query both top-level and MDC exchangeId for log search Existing log records only have exchangeId inside the mdc object, not as a top-level indexed field. Use a bool should clause to match on either exchangeId (new records) or mdc.camel.exchangeId (old records). Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/cameleer3/server/app/search/OpenSearchLogIndex.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchLogIndex.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchLogIndex.java index a3a8de15..4bf970f9 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchLogIndex.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/search/OpenSearchLogIndex.java @@ -110,7 +110,11 @@ public class OpenSearchLogIndex { bool.must(Query.of(q -> q.term(t -> t.field("agentId").value(FieldValue.of(agentId))))); } if (exchangeId != null && !exchangeId.isEmpty()) { - bool.must(Query.of(q -> q.term(t -> t.field("exchangeId").value(FieldValue.of(exchangeId))))); + // Match on top-level field (new records) or MDC nested field (old records) + bool.must(Query.of(q -> q.bool(b -> b + .should(Query.of(s -> s.term(t -> t.field("exchangeId").value(FieldValue.of(exchangeId))))) + .should(Query.of(s -> s.term(t -> t.field("mdc.camel.exchangeId").value(FieldValue.of(exchangeId))))) + .minimumShouldMatch("1")))); } if (level != null && !level.isEmpty()) { bool.must(Query.of(q -> q.term(t -> t.field("level").value(FieldValue.of(level.toUpperCase())))));