Skip to content

Commit a84eac4

Browse files
committed
Added remote index search test for linear retriever
1 parent 966b641 commit a84eac4

File tree

1 file changed

+46
-5
lines changed

1 file changed

+46
-5
lines changed

x-pack/plugin/rank-rrf/src/test/java/org/elasticsearch/xpack/rank/linear/LinearRetrieverBuilderTests.java

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.elasticsearch.search.retriever.StandardRetrieverBuilder;
2727
import org.elasticsearch.test.ESTestCase;
2828

29+
import java.util.HashMap;
2930
import java.util.HashSet;
3031
import java.util.List;
3132
import java.util.Map;
@@ -39,7 +40,7 @@ public class LinearRetrieverBuilderTests extends ESTestCase {
3940
public void testSimplifiedParamsRewrite() {
4041
final String indexName = "test-index";
4142
final List<String> testInferenceFields = List.of("semantic_field_1", "semantic_field_2");
42-
final ResolvedIndices resolvedIndices = createMockResolvedIndices(indexName, testInferenceFields);
43+
final ResolvedIndices resolvedIndices = createMockResolvedIndices(indexName, testInferenceFields, null);
4344
final QueryRewriteContext queryRewriteContext = new QueryRewriteContext(
4445
parserConfig(),
4546
null,
@@ -145,8 +146,41 @@ public void testSimplifiedParamsRewrite() {
145146
);
146147
}
147148

148-
private static ResolvedIndices createMockResolvedIndices(String indexName, List<String> inferenceFields) {
149-
Index index = new Index(indexName, randomAlphaOfLength(10));
149+
public void testSearchRemoteIndex() {
150+
final ResolvedIndices resolvedIndices = createMockResolvedIndices(
151+
"local-index",
152+
List.of(),
153+
Map.of("remote-cluster", "remote-index")
154+
);
155+
final QueryRewriteContext queryRewriteContext = new QueryRewriteContext(
156+
parserConfig(),
157+
null,
158+
null,
159+
resolvedIndices,
160+
new PointInTimeBuilder(new BytesArray("pitid")),
161+
null
162+
);
163+
164+
LinearRetrieverBuilder retriever = new LinearRetrieverBuilder(
165+
null,
166+
null,
167+
"foo",
168+
MinMaxScoreNormalizer.INSTANCE,
169+
DEFAULT_RANK_WINDOW_SIZE,
170+
new float[0],
171+
new ScoreNormalizer[0]
172+
);
173+
174+
IllegalArgumentException iae = expectThrows(IllegalArgumentException.class, () -> retriever.doRewrite(queryRewriteContext));
175+
assertEquals("[linear] does not support the simplified query format when querying remote indices", iae.getMessage());
176+
}
177+
178+
private static ResolvedIndices createMockResolvedIndices(
179+
String localIndexName,
180+
List<String> inferenceFields,
181+
Map<String, String> remoteIndexNames
182+
) {
183+
Index index = new Index(localIndexName, randomAlphaOfLength(10));
150184
IndexMetadata.Builder indexMetadataBuilder = IndexMetadata.builder(index.getName())
151185
.settings(
152186
Settings.builder()
@@ -162,9 +196,16 @@ private static ResolvedIndices createMockResolvedIndices(String indexName, List<
162196
);
163197
}
164198

199+
Map<String, OriginalIndices> remoteIndices = new HashMap<>();
200+
if (remoteIndexNames != null) {
201+
for (Map.Entry<String, String> entry : remoteIndexNames.entrySet()) {
202+
remoteIndices.put(entry.getKey(), new OriginalIndices(new String[] { entry.getValue() }, IndicesOptions.DEFAULT));
203+
}
204+
}
205+
165206
return new MockResolvedIndices(
166-
Map.of(),
167-
new OriginalIndices(new String[] { indexName }, IndicesOptions.DEFAULT),
207+
remoteIndices,
208+
new OriginalIndices(new String[] { localIndexName }, IndicesOptions.DEFAULT),
168209
Map.of(index, indexMetadataBuilder.build())
169210
);
170211
}

0 commit comments

Comments
 (0)