|
20 | 20 | package org.elasticsearch.action.search;
|
21 | 21 |
|
22 | 22 | import org.elasticsearch.action.ActionListener;
|
| 23 | +import org.elasticsearch.action.support.IndicesOptions; |
23 | 24 | import org.elasticsearch.common.document.DocumentField;
|
24 | 25 | import org.elasticsearch.common.settings.Settings;
|
25 | 26 | import org.elasticsearch.common.text.Text;
|
@@ -242,4 +243,43 @@ public void run() throws IOException {
|
242 | 243 | assertNotNull(reference.get());
|
243 | 244 | assertEquals(1, mockSearchPhaseContext.phasesExecuted.get());
|
244 | 245 | }
|
| 246 | + |
| 247 | + public void testExpandRequestOptions() throws IOException { |
| 248 | + MockSearchPhaseContext mockSearchPhaseContext = new MockSearchPhaseContext(1); |
| 249 | + mockSearchPhaseContext.searchTransport = new SearchTransportService( |
| 250 | + Settings.builder().put("search.remote.connect", false).build(), null, null) { |
| 251 | + |
| 252 | + @Override |
| 253 | + void sendExecuteMultiSearch(MultiSearchRequest request, SearchTask task, ActionListener<MultiSearchResponse> listener) { |
| 254 | + final QueryBuilder postFilter = QueryBuilders.existsQuery("foo"); |
| 255 | + assertTrue(request.requests().stream().allMatch((r) -> "foo".equals(r.preference()))); |
| 256 | + assertTrue(request.requests().stream().allMatch((r) -> "baz".equals(r.routing()))); |
| 257 | + assertTrue(request.requests().stream().allMatch((r) -> postFilter.equals(r.source().postFilter()))); |
| 258 | + } |
| 259 | + }; |
| 260 | + mockSearchPhaseContext.getRequest().source(new SearchSourceBuilder() |
| 261 | + .collapse( |
| 262 | + new CollapseBuilder("someField") |
| 263 | + .setInnerHits(new InnerHitBuilder().setName("foobarbaz")) |
| 264 | + ) |
| 265 | + .postFilter(QueryBuilders.existsQuery("foo"))) |
| 266 | + .preference("foobar") |
| 267 | + .routing("baz"); |
| 268 | + |
| 269 | + SearchHits hits = new SearchHits(new SearchHit[0], 1, 1.0f); |
| 270 | + InternalSearchResponse internalSearchResponse = new InternalSearchResponse(hits, null, null, null, false, null, 1); |
| 271 | + AtomicReference<SearchResponse> reference = new AtomicReference<>(); |
| 272 | + ExpandSearchPhase phase = new ExpandSearchPhase(mockSearchPhaseContext, internalSearchResponse, r -> |
| 273 | + new SearchPhase("test") { |
| 274 | + @Override |
| 275 | + public void run() throws IOException { |
| 276 | + reference.set(mockSearchPhaseContext.buildSearchResponse(r, null)); |
| 277 | + } |
| 278 | + } |
| 279 | + ); |
| 280 | + phase.run(); |
| 281 | + mockSearchPhaseContext.assertNoFailure(); |
| 282 | + assertNotNull(reference.get()); |
| 283 | + assertEquals(1, mockSearchPhaseContext.phasesExecuted.get()); |
| 284 | + } |
245 | 285 | }
|
0 commit comments