|
@@ -51,6 +51,7 @@ import org.elasticsearch.common.lucene.search.MultiPhrasePrefixQuery;
|
|
|
import org.elasticsearch.index.IndexMode;
|
|
|
import org.elasticsearch.index.IndexSettings;
|
|
|
import org.elasticsearch.index.IndexVersion;
|
|
|
+import org.elasticsearch.index.IndexVersions;
|
|
|
import org.elasticsearch.index.analysis.AnalyzerScope;
|
|
|
import org.elasticsearch.index.analysis.CharFilterFactory;
|
|
|
import org.elasticsearch.index.analysis.CustomAnalyzer;
|
|
@@ -350,6 +351,31 @@ public class TextFieldMapperTests extends MapperTestCase {
|
|
|
assertThat(fieldType.stored(), is(false));
|
|
|
}
|
|
|
|
|
|
+ public void testStoreParameterDefaultsSyntheticSourceWithKeywordMultiFieldBwc() throws IOException {
|
|
|
+ var indexSettingsBuilder = getIndexSettingsBuilder();
|
|
|
+ indexSettingsBuilder.put(IndexSettings.INDEX_MAPPER_SOURCE_MODE_SETTING.getKey(), "synthetic");
|
|
|
+ var indexSettings = indexSettingsBuilder.build();
|
|
|
+
|
|
|
+ var mapping = mapping(b -> {
|
|
|
+ b.startObject("name");
|
|
|
+ b.field("type", "text");
|
|
|
+ b.startObject("fields");
|
|
|
+ b.startObject("keyword");
|
|
|
+ b.field("type", "keyword");
|
|
|
+ b.endObject();
|
|
|
+ b.endObject();
|
|
|
+ b.endObject();
|
|
|
+ });
|
|
|
+ IndexVersion beforeVersion = IndexVersions.INDEX_INT_SORT_INT_TYPE_8_19;
|
|
|
+ DocumentMapper mapper = createMapperService(beforeVersion, indexSettings, mapping).documentMapper();
|
|
|
+
|
|
|
+ var source = source(b -> b.field("name", "quick brown fox"));
|
|
|
+ ParsedDocument doc = mapper.parse(source);
|
|
|
+ List<IndexableField> fields = doc.rootDoc().getFields("name");
|
|
|
+ IndexableFieldType fieldType = fields.get(0).fieldType();
|
|
|
+ assertThat(fieldType.stored(), is(false));
|
|
|
+ }
|
|
|
+
|
|
|
public void testStoreParameterDefaultsSyntheticSourceTextFieldIsMultiField() throws IOException {
|
|
|
var indexSettingsBuilder = getIndexSettingsBuilder();
|
|
|
indexSettingsBuilder.put(IndexSettings.INDEX_MAPPER_SOURCE_MODE_SETTING.getKey(), "synthetic");
|
|
@@ -374,6 +400,31 @@ public class TextFieldMapperTests extends MapperTestCase {
|
|
|
assertThat(fieldType.stored(), is(false));
|
|
|
}
|
|
|
|
|
|
+ public void testStoreParameterDefaultsSyntheticSourceTextFieldIsMultiFieldBwc() throws IOException {
|
|
|
+ var indexSettingsBuilder = getIndexSettingsBuilder();
|
|
|
+ indexSettingsBuilder.put(IndexSettings.INDEX_MAPPER_SOURCE_MODE_SETTING.getKey(), "synthetic");
|
|
|
+ var indexSettings = indexSettingsBuilder.build();
|
|
|
+
|
|
|
+ var mapping = mapping(b -> {
|
|
|
+ b.startObject("name");
|
|
|
+ b.field("type", "keyword");
|
|
|
+ b.startObject("fields");
|
|
|
+ b.startObject("text");
|
|
|
+ b.field("type", "text");
|
|
|
+ b.endObject();
|
|
|
+ b.endObject();
|
|
|
+ b.endObject();
|
|
|
+ });
|
|
|
+ IndexVersion beforeVersion = IndexVersions.INDEX_INT_SORT_INT_TYPE_8_19;
|
|
|
+ DocumentMapper mapper = createMapperService(beforeVersion, indexSettings, mapping).documentMapper();
|
|
|
+
|
|
|
+ var source = source(b -> b.field("name", "quick brown fox"));
|
|
|
+ ParsedDocument doc = mapper.parse(source);
|
|
|
+ List<IndexableField> fields = doc.rootDoc().getFields("name.text");
|
|
|
+ IndexableFieldType fieldType = fields.get(0).fieldType();
|
|
|
+ assertThat(fieldType.stored(), is(true));
|
|
|
+ }
|
|
|
+
|
|
|
public void testBWCSerialization() throws IOException {
|
|
|
MapperService mapperService = createMapperService(fieldMapping(b -> {
|
|
|
b.field("type", "text");
|