@Override
 public MetadataFieldMapper.Builder parse(
     String name, Map<String, Object> node, ParserContext parserContext)
     throws MapperParsingException {
   Builder builder = new Builder(parserContext.type());
   for (Iterator<Map.Entry<String, Object>> iterator = node.entrySet().iterator();
       iterator.hasNext(); ) {
     Map.Entry<String, Object> entry = iterator.next();
     String fieldName = Strings.toUnderscoreCase(entry.getKey());
     Object fieldNode = entry.getValue();
     if (fieldName.equals("type")) {
       builder.type(fieldNode.toString());
       iterator.remove();
     } else if (fieldName.equals("postings_format")
         && parserContext.indexVersionCreated().before(Version.V_2_0_0_beta1)) {
       // ignore before 2.0, reject on and after 2.0
       iterator.remove();
     } else if (fieldName.equals("fielddata")) {
       // Only take over `loading`, since that is the only option now that is configurable:
       Map<String, String> fieldDataSettings =
           SettingsLoader.Helper.loadNestedFromMap(nodeMapValue(fieldNode, "fielddata"));
       if (fieldDataSettings.containsKey(MappedFieldType.Loading.KEY)) {
         Settings settings =
             settingsBuilder()
                 .put(
                     MappedFieldType.Loading.KEY,
                     fieldDataSettings.get(MappedFieldType.Loading.KEY))
                 .build();
         builder.fieldDataSettings(settings);
       }
       iterator.remove();
     }
   }
   return builder;
 }
예제 #2
0
 MultiFieldParserContext(ParserContext in) {
   super(
       in.type(),
       in.analysisService,
       in.similarityLookupService(),
       in.mapperService(),
       in.typeParsers(),
       in.indexVersionCreated(),
       in.parseFieldMatcher(),
       in.queryShardContext());
 }