From 508748aa0110a71d7c0882108bc5229978e6ef92 Mon Sep 17 00:00:00 2001 From: Ioana Tagirta Date: Thu, 27 Feb 2025 16:39:14 +0100 Subject: [PATCH 1/4] Check if MGET request failed when we retrieve query rules --- .../xpack/application/rules/RuleQueryBuilder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/RuleQueryBuilder.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/RuleQueryBuilder.java index 3e573929731fb..54e83104459d3 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/RuleQueryBuilder.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/RuleQueryBuilder.java @@ -252,6 +252,11 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) { for (MultiGetItemResponse item : multiGetResponse) { String rulesetId = item.getId(); + if (item.isFailed()) { + listener.onFailure(item.getFailure().getFailure()); + return; + } + GetResponse getResponse = item.getResponse(); if (getResponse.isExists() == false) { From 3f232117274fd06c6218111f4369182a491b1502 Mon Sep 17 00:00:00 2001 From: Ioana Tagirta Date: Mon, 3 Mar 2025 17:20:40 +0100 Subject: [PATCH 2/4] Add test --- .../81_query_rules_retriever_no_rulesets.yml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/rules/81_query_rules_retriever_no_rulesets.yml diff --git a/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/rules/81_query_rules_retriever_no_rulesets.yml b/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/rules/81_query_rules_retriever_no_rulesets.yml new file mode 100644 index 0000000000000..77c2c66f4bcd1 --- /dev/null +++ b/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/rules/81_query_rules_retriever_no_rulesets.yml @@ -0,0 +1,35 @@ +setup: + - do: + bulk: + refresh: true + index: test-index1 + body: + - index: + _id: foo + - { "text": "foo - pinned doc for foo" } + +--- +"query rules retriever when the .query-rules system index is missing": + - skip: + features: [ headers ] + - do: + headers: + # Force JSON content type so that we use a parser that interprets the floating-point score as a double + Content-Type: application/json + search: + index: test-index1 + body: + retriever: + rule: + match_criteria: + foo: foo + bar: bar + ruleset_ids: + abc + retriever: + standard: + query: + query_string: + query: bar + explain: true + catch: "missing" From 1cf1bf788d536b5bdd98d9979e0f49b12eb1832d Mon Sep 17 00:00:00 2001 From: Ioana Tagirta Date: Mon, 3 Mar 2025 17:29:44 +0100 Subject: [PATCH 3/4] Add comments --- .../elasticsearch/xpack/application/rules/RuleQueryBuilder.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/RuleQueryBuilder.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/RuleQueryBuilder.java index 54e83104459d3..7f107660ba1de 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/RuleQueryBuilder.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/RuleQueryBuilder.java @@ -252,6 +252,7 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) { for (MultiGetItemResponse item : multiGetResponse) { String rulesetId = item.getId(); + // this usually happens when the system index does not exist because no query rules were created yet if (item.isFailed()) { listener.onFailure(item.getFailure().getFailure()); return; @@ -259,6 +260,7 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) { GetResponse getResponse = item.getResponse(); + // this happens when an individual query ruleset cannot be found if (getResponse.isExists() == false) { listener.onFailure(new ResourceNotFoundException("query ruleset " + rulesetId + " not found")); return; From 9278ad51759c5b6d8193986e87e640896453bfcd Mon Sep 17 00:00:00 2001 From: Ioana Tagirta Date: Mon, 3 Mar 2025 17:34:56 +0100 Subject: [PATCH 4/4] Remove header from yaml test --- .../entsearch/rules/81_query_rules_retriever_no_rulesets.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/rules/81_query_rules_retriever_no_rulesets.yml b/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/rules/81_query_rules_retriever_no_rulesets.yml index 77c2c66f4bcd1..a5956ed6fdf32 100644 --- a/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/rules/81_query_rules_retriever_no_rulesets.yml +++ b/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/rules/81_query_rules_retriever_no_rulesets.yml @@ -13,9 +13,6 @@ setup: - skip: features: [ headers ] - do: - headers: - # Force JSON content type so that we use a parser that interprets the floating-point score as a double - Content-Type: application/json search: index: test-index1 body: