|
19 | 19 | import org.elasticsearch.action.search.SearchRequest; |
20 | 20 | import org.elasticsearch.action.support.WriteRequest; |
21 | 21 | import org.elasticsearch.common.settings.Settings; |
| 22 | +import org.elasticsearch.index.IndexSettings; |
22 | 23 | import org.elasticsearch.index.query.IdsQueryBuilder; |
23 | 24 | import org.elasticsearch.test.ESSingleNodeTestCase; |
24 | 25 | import org.elasticsearch.xcontent.XContentBuilder; |
|
33 | 34 |
|
34 | 35 | import static org.elasticsearch.xcontent.XContentFactory.jsonBuilder; |
35 | 36 | import static org.hamcrest.Matchers.contains; |
| 37 | +import static org.hamcrest.Matchers.containsInAnyOrder; |
36 | 38 | import static org.hamcrest.Matchers.empty; |
37 | 39 | import static org.hamcrest.Matchers.equalTo; |
38 | 40 | import static org.hamcrest.Matchers.hasKey; |
@@ -183,7 +185,14 @@ private void verifySyntheticArray(Object[][] arrays, XContentBuilder mapping, In |
183 | 185 | var document = reader.storedFields().document(i); |
184 | 186 | // Verify that there is no ignored source: |
185 | 187 | Set<String> storedFieldNames = new LinkedHashSet<>(document.getFields().stream().map(IndexableField::name).toList()); |
186 | | - assertThat(storedFieldNames, contains(expectedStoredFields)); |
| 188 | + if (IndexSettings.RECOVERY_USE_SYNTHETIC_SOURCE.isEnabled()) { |
| 189 | + assertThat(storedFieldNames, contains(expectedStoredFields)); |
| 190 | + } else { |
| 191 | + String[] copyExpectedStoredFields = new String[expectedStoredFields.length + 1]; |
| 192 | + System.arraycopy(expectedStoredFields, 0, copyExpectedStoredFields, 0, expectedStoredFields.length); |
| 193 | + copyExpectedStoredFields[copyExpectedStoredFields.length - 1] = "_recovery_source"; |
| 194 | + assertThat(storedFieldNames, containsInAnyOrder(copyExpectedStoredFields)); |
| 195 | + } |
187 | 196 | } |
188 | 197 | var fieldInfo = FieldInfos.getMergedFieldInfos(reader).fieldInfo("field.offsets"); |
189 | 198 | assertThat(fieldInfo.getDocValuesType(), equalTo(DocValuesType.SORTED)); |
@@ -248,7 +257,11 @@ private void verifySyntheticObjectArray(List<List<Object[]>> documents) throws I |
248 | 257 | var document = reader.storedFields().document(i); |
249 | 258 | // Verify that there is ignored source because of leaf array being wrapped by object array: |
250 | 259 | List<String> storedFieldNames = document.getFields().stream().map(IndexableField::name).toList(); |
251 | | - assertThat(storedFieldNames, contains("_id", "_ignored_source")); |
| 260 | + if (IndexSettings.RECOVERY_USE_SYNTHETIC_SOURCE.isEnabled()) { |
| 261 | + assertThat(storedFieldNames, contains("_id", "_ignored_source")); |
| 262 | + } else { |
| 263 | + assertThat(storedFieldNames, containsInAnyOrder("_id", "_ignored_source", "_recovery_source")); |
| 264 | + } |
252 | 265 |
|
253 | 266 | // Verify that there is no offset field: |
254 | 267 | LeafReader leafReader = reader.leaves().get(0).reader(); |
@@ -321,7 +334,11 @@ private void verifySyntheticArrayInObject(List<Object[]> documents) throws IOExc |
321 | 334 | var document = reader.storedFields().document(i); |
322 | 335 | // Verify that there is no ignored source: |
323 | 336 | Set<String> storedFieldNames = new LinkedHashSet<>(document.getFields().stream().map(IndexableField::name).toList()); |
324 | | - assertThat(storedFieldNames, contains("_id")); |
| 337 | + if (IndexSettings.RECOVERY_USE_SYNTHETIC_SOURCE.isEnabled()) { |
| 338 | + assertThat(storedFieldNames, contains("_id")); |
| 339 | + } else { |
| 340 | + assertThat(storedFieldNames, containsInAnyOrder("_id", "_recovery_source")); |
| 341 | + } |
325 | 342 | } |
326 | 343 | var fieldInfo = FieldInfos.getMergedFieldInfos(reader).fieldInfo("object.field.offsets"); |
327 | 344 | assertThat(fieldInfo.getDocValuesType(), equalTo(DocValuesType.SORTED)); |
|
0 commit comments