From d8ffc0621af6326e193723a3e76579368cc612a3 Mon Sep 17 00:00:00 2001 From: Panagiotis Bailis Date: Mon, 27 Jan 2025 18:55:09 +0200 Subject: [PATCH] [8.17] backporting support for deprecated window_size param for rank rrf --- .../action/search/SearchCapabilities.java | 3 ++ .../search/rank/RankBuilder.java | 2 +- .../rest-api-spec/test/rrf/100_rank_rrf.yml | 36 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java b/server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java index fe7b835f9bb1b..3745761218b93 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java +++ b/server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java @@ -42,6 +42,8 @@ private SearchCapabilities() {} private static final String MOVING_FN_RIGHT_MATH = "moving_fn_right_math"; private static final String RANDOM_SAMPLER_WITH_SCORED_SUBAGGS = "random_sampler_with_scored_subaggs"; + /** Support deprecated window_size field in rank. */ + private static final String RRF_WINDOW_SIZE_SUPPORT_DEPRECATED = "rrf_window_size_support_deprecated"; public static final Set CAPABILITIES; static { @@ -60,6 +62,7 @@ private SearchCapabilities() {} if (Build.current().isSnapshot()) { capabilities.add(KQL_QUERY_SUPPORTED); } + capabilities.add(RRF_WINDOW_SIZE_SUPPORT_DEPRECATED); CAPABILITIES = Set.copyOf(capabilities); } } diff --git a/server/src/main/java/org/elasticsearch/search/rank/RankBuilder.java b/server/src/main/java/org/elasticsearch/search/rank/RankBuilder.java index e8f6fdf9fde46..4dabc9f91ebd8 100644 --- a/server/src/main/java/org/elasticsearch/search/rank/RankBuilder.java +++ b/server/src/main/java/org/elasticsearch/search/rank/RankBuilder.java @@ -35,7 +35,7 @@ */ public abstract class RankBuilder implements VersionedNamedWriteable, ToXContentObject { - public static final ParseField RANK_WINDOW_SIZE_FIELD = new ParseField("rank_window_size"); + public static final ParseField RANK_WINDOW_SIZE_FIELD = new ParseField("rank_window_size", "window_size"); public static final int DEFAULT_RANK_WINDOW_SIZE = SearchService.DEFAULT_SIZE; diff --git a/x-pack/plugin/rank-rrf/src/yamlRestTest/resources/rest-api-spec/test/rrf/100_rank_rrf.yml b/x-pack/plugin/rank-rrf/src/yamlRestTest/resources/rest-api-spec/test/rrf/100_rank_rrf.yml index a5c346b386999..e9434991050f1 100644 --- a/x-pack/plugin/rank-rrf/src/yamlRestTest/resources/rest-api-spec/test/rrf/100_rank_rrf.yml +++ b/x-pack/plugin/rank-rrf/src/yamlRestTest/resources/rest-api-spec/test/rrf/100_rank_rrf.yml @@ -100,6 +100,42 @@ setup: - match: { hits.hits.2.fields.text.0: "other" } - match: { hits.hits.2.fields.keyword.0: "other" } +--- +"Simple rank with old window_size param": + + - requires: + capabilities: + - method: POST + path: /_search + capabilities: [ rrf_window_size_support_deprecated ] + test_runner_features: capabilities + reason: "add deprecated field [window_size] back to support upgrade" + - do: + warnings: + - "Deprecated field [rank] used, replaced by [retriever]" + - "Deprecated field [window_size] used, expected [rank_window_size] instead" + search: + index: test + body: + track_total_hits: false + fields: [ "keyword" ] + knn: + field: vector + query_vector: [ 0.0 ] + k: 3 + num_candidates: 3 + query: + term: + text: term + rank: + rrf: + window_size: 100 + rank_constant: 1 + size: 1 + + - match: { hits.hits.0._id: "1" } + - match: { hits.hits.0.fields.keyword.0: "other" } + --- "Simple rank with multiple bm25 sub searches":