|
10 | 10 | package org.elasticsearch.index.mapper.extras; |
11 | 11 |
|
12 | 12 | import org.apache.lucene.analysis.TokenStream; |
| 13 | +import org.apache.lucene.document.Field; |
| 14 | +import org.apache.lucene.document.StoredField; |
| 15 | +import org.apache.lucene.document.StringField; |
13 | 16 | import org.apache.lucene.index.DirectoryReader; |
14 | 17 | import org.apache.lucene.index.DocValuesType; |
15 | 18 | import org.apache.lucene.index.IndexOptions; |
|
21 | 24 | import org.apache.lucene.tests.analysis.CannedTokenStream; |
22 | 25 | import org.apache.lucene.tests.analysis.Token; |
23 | 26 | import org.apache.lucene.tests.index.RandomIndexWriter; |
| 27 | +import org.apache.lucene.util.BytesRef; |
24 | 28 | import org.elasticsearch.common.Strings; |
25 | 29 | import org.elasticsearch.core.Tuple; |
26 | 30 | import org.elasticsearch.index.IndexSettings; |
@@ -350,4 +354,29 @@ public void testStoreParameterDefaultsSyntheticSourceTextFieldIsMultiField() thr |
350 | 354 | assertThat(fields, empty()); |
351 | 355 | } |
352 | 356 | } |
| 357 | + |
| 358 | + public void testLoadSyntheticSourceFromStringOrBytesRef() throws IOException { |
| 359 | + DocumentMapper mapper = createSytheticSourceMapperService(mapping(b -> { |
| 360 | + b.startObject("field1").field("type", "match_only_text").endObject(); |
| 361 | + b.startObject("field2").field("type", "match_only_text").endObject(); |
| 362 | + })).documentMapper(); |
| 363 | + try (Directory directory = newDirectory()) { |
| 364 | + RandomIndexWriter iw = indexWriterForSyntheticSource(directory); |
| 365 | + |
| 366 | + LuceneDocument document = new LuceneDocument(); |
| 367 | + document.add(new StringField("field1", "foo", Field.Store.NO)); |
| 368 | + document.add(new StoredField("field1._original", "foo")); |
| 369 | + |
| 370 | + document.add(new StringField("field2", "bar", Field.Store.NO)); |
| 371 | + document.add(new StoredField("field2._original", new BytesRef("bar"))); |
| 372 | + |
| 373 | + iw.addDocument(document); |
| 374 | + iw.close(); |
| 375 | + |
| 376 | + try (DirectoryReader indexReader = wrapInMockESDirectoryReader(DirectoryReader.open(directory))) { |
| 377 | + String syntheticSource = syntheticSource(mapper, null, indexReader, 0); |
| 378 | + assertEquals("{\"field1\":\"foo\",\"field2\":\"bar\"}", syntheticSource); |
| 379 | + } |
| 380 | + } |
| 381 | + } |
353 | 382 | } |
0 commit comments