From e993ad5b8cd7ce05e6b86aadf40d4e7fe52d920e Mon Sep 17 00:00:00 2001 From: Panagiotis Bailis Date: Mon, 27 Jan 2025 18:50:28 +0200 Subject: [PATCH] [8.16] backporting support for deprecated window_size param for rank rrf --- .../action/search/SearchCapabilities.java | 5 ++- .../search/rank/RankBuilder.java | 2 +- .../rest-api-spec/test/rrf/100_rank_rrf.yml | 36 +++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) 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 a70c1ba313055..a2e13a4a4c3e6 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 @@ -24,11 +24,14 @@ private SearchCapabilities() {} private static final String BIT_DENSE_VECTOR_SYNTHETIC_SOURCE_CAPABILITY = "bit_dense_vector_synthetic_source"; private static final String NESTED_RETRIEVER_INNER_HITS_SUPPORT = "nested_retriever_inner_hits_support"; 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 = Set.of( RANGE_REGEX_INTERVAL_QUERY_CAPABILITY, BIT_DENSE_VECTOR_SYNTHETIC_SOURCE_CAPABILITY, NESTED_RETRIEVER_INNER_HITS_SUPPORT, - RANDOM_SAMPLER_WITH_SCORED_SUBAGGS + RANDOM_SAMPLER_WITH_SCORED_SUBAGGS, + RRF_WINDOW_SIZE_SUPPORT_DEPRECATED ); } 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":