소스 검색

[8.x] rrf support the window_size parameter to compatible with old version (#120690)

weizijun 9 달 전
부모
커밋
14f2a4201c

+ 4 - 0
server/src/main/java/org/elasticsearch/rest/action/search/SearchCapabilities.java

@@ -36,6 +36,9 @@ public final class SearchCapabilities {
     /** knn query where k defaults to the request size. */
     private static final String K_DEFAULT_TO_SIZE = "k_default_to_size";
 
+    /** Support deprecated window_size field in rank. */
+    private static final String RRF_WINDOW_SIZE_SUPPORT_DEPRECATED = "rrf_window_size_support_deprecated";
+
     private static final String RANDOM_SAMPLER_WITH_SCORED_SUBAGGS = "random_sampler_with_scored_subaggs";
     private static final String OPTIMIZED_SCALAR_QUANTIZATION_BBQ = "optimized_scalar_quantization_bbq";
     private static final String KNN_QUANTIZED_VECTOR_RESCORE_OVERSAMPLE = "knn_quantized_vector_rescore_oversample";
@@ -54,6 +57,7 @@ public final class SearchCapabilities {
         capabilities.add(MOVING_FN_RIGHT_MATH);
         capabilities.add(K_DEFAULT_TO_SIZE);
         capabilities.add(KQL_QUERY_SUPPORTED);
+        capabilities.add(RRF_WINDOW_SIZE_SUPPORT_DEPRECATED);
         CAPABILITIES = Set.copyOf(capabilities);
     }
 }

+ 1 - 1
server/src/main/java/org/elasticsearch/search/rank/RankBuilder.java

@@ -35,7 +35,7 @@ import java.util.Objects;
  */
 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;
 

+ 36 - 0
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":