LeafFieldsLookup(MapperService mapperService, @Nullable String[] types, LeafReader reader) { this.mapperService = mapperService; this.singleType = mapperService.getIndexSettings().isSingleType(); this.types = types; this.reader = reader; this.fieldVisitor = new SingleFieldsVisitor(null); }
@Override public void postProcess(MapperService mapperService) { super.postProcess(mapperService); if (id != null) { addValue(IdFieldMapper.NAME, id); } if (type != null) { addValue(TypeFieldMapper.NAME, type); } if (type != null && id != null) { addValue(UidFieldMapper.NAME, Uid.createUid(type, id)); } } }
private FieldLookup loadFieldData(String name) { FieldLookup data = cachedFieldData.get(name); if (data == null) { MappedFieldType fieldType = mapperService.fullName(name); if (fieldType == null) { throw new IllegalArgumentException("No field found for [" + name + "] in mapping with types " + Arrays.toString(types)); } data = new FieldLookup(fieldType); cachedFieldData.put(name, data); } if (data.fields() == null) { String fieldName = data.fieldType().name(); String lookupField = fieldName; if (singleType && UidFieldMapper.NAME.equals(fieldName)) { lookupField = IdFieldMapper.NAME; } fieldVisitor.reset(lookupField); try { reader.document(docId, fieldVisitor); fieldVisitor.postProcess(mapperService); List<Object> storedFields = fieldVisitor.fields().get(fieldName); data.fields(singletonMap(fieldName, storedFields)); } catch (IOException e) { throw new ElasticsearchParseException("failed to load field [{}]", e, name); } } return data; }
private FieldLookup loadFieldData(String name) { FieldLookup data = cachedFieldData.get(name); if (data == null) { MappedFieldType fieldType = mapperService.fullName(name); if (fieldType == null) { throw new IllegalArgumentException("No field found for [" + name + "] in mapping with types " + Arrays.toString(types)); } data = new FieldLookup(fieldType); cachedFieldData.put(name, data); } if (data.fields() == null) { String fieldName = data.fieldType().name(); String lookupField = fieldName; if (singleType && UidFieldMapper.NAME.equals(fieldName)) { lookupField = IdFieldMapper.NAME; } fieldVisitor.reset(lookupField); try { reader.document(docId, fieldVisitor); fieldVisitor.postProcess(mapperService); List<Object> storedFields = fieldVisitor.fields().get(fieldName); data.fields(singletonMap(fieldName, storedFields)); } catch (IOException e) { throw new ElasticsearchParseException("failed to load field [{}]", e, name); } } return data; }
LeafFieldsLookup(MapperService mapperService, @Nullable String[] types, LeafReader reader) { this.mapperService = mapperService; this.types = types; this.reader = reader; this.fieldVisitor = new SingleFieldsVisitor(null); }
@Override public void postProcess(MapperService mapperService) { super.postProcess(mapperService); if (id != null) { addValue(IdFieldMapper.NAME, id); } if (type != null) { addValue(TypeFieldMapper.NAME, type); } if (type != null && id != null) { addValue(UidFieldMapper.NAME, Uid.createUid(type, id)); } }
private FieldLookup loadFieldData(String name) { FieldLookup data = cachedFieldData.get(name); if (data == null) { MappedFieldType fieldType = mapperService.fullName(name); if (fieldType == null) { throw new IllegalArgumentException("No field found for [" + name + "] in mapping with types " + Arrays.toString(types)); } data = new FieldLookup(fieldType); cachedFieldData.put(name, data); } if (data.fields() == null) { String fieldName = data.fieldType().name(); String lookupField = fieldName; if (singleType && UidFieldMapper.NAME.equals(fieldName)) { lookupField = IdFieldMapper.NAME; } fieldVisitor.reset(lookupField); try { reader.document(docId, fieldVisitor); fieldVisitor.postProcess(mapperService); List<Object> storedFields = fieldVisitor.fields().get(fieldName); data.fields(singletonMap(fieldName, storedFields)); } catch (IOException e) { throw new ElasticsearchParseException("failed to load field [{}]", e, name); } } return data; }
LeafFieldsLookup(MapperService mapperService, @Nullable String[] types, LeafReader reader) { this.mapperService = mapperService; this.singleType = mapperService.getIndexSettings().isSingleType(); this.types = types; this.reader = reader; this.fieldVisitor = new SingleFieldsVisitor(null); }
@Override public void postProcess(MapperService mapperService) { super.postProcess(mapperService); if (id != null) { addValue(IdFieldMapper.NAME, id); } if (type != null) { addValue(TypeFieldMapper.NAME, type); } if (type != null && id != null) { addValue(UidFieldMapper.NAME, Uid.createUid(type, id)); } } }
private FieldLookup loadFieldData(String name) { FieldLookup data = cachedFieldData.get(name); if (data == null) { MappedFieldType fieldType = mapperService.fullName(name); if (fieldType == null) { throw new IllegalArgumentException("No field found for [" + name + "] in mapping with types " + Arrays.toString(types)); } data = new FieldLookup(fieldType); cachedFieldData.put(name, data); } if (data.fields() == null) { String fieldName = data.fieldType().name(); if (singleType && UidFieldMapper.NAME.equals(fieldName)) { fieldName = IdFieldMapper.NAME; } fieldVisitor.reset(fieldName); try { reader.document(docId, fieldVisitor); fieldVisitor.postProcess(mapperService); List<Object> storedFields = fieldVisitor.fields().get(data.fieldType().name()); data.fields(singletonMap(name, storedFields)); } catch (IOException e) { throw new ElasticsearchParseException("failed to load field [{}]", e, name); } } return data; }
LeafFieldsLookup(MapperService mapperService, @Nullable String[] types, LeafReader reader) { this.mapperService = mapperService; this.singleType = mapperService.getIndexSettings().isSingleType(); this.types = types; this.reader = reader; this.fieldVisitor = new SingleFieldsVisitor(null); }
@Override public void postProcess(MapperService mapperService) { super.postProcess(mapperService); if (id != null) { addValue(IdFieldMapper.NAME, id); } if (type != null) { addValue(TypeFieldMapper.NAME, type); } if (type != null && id != null) { addValue(UidFieldMapper.NAME, Uid.createUid(type, id)); } } }
private FieldLookup loadFieldData(String name) { FieldLookup data = cachedFieldData.get(name); if (data == null) { MappedFieldType fieldType = mapperService.smartNameFieldType(name, types); if (fieldType == null) { throw new IllegalArgumentException("No field found for [" + name + "] in mapping with types " + Arrays.toString(types) + ""); } data = new FieldLookup(fieldType); cachedFieldData.put(name, data); } if (data.fields() == null) { String fieldName = data.fieldType().names().indexName(); fieldVisitor.reset(fieldName); try { reader.document(docId, fieldVisitor); fieldVisitor.postProcess(data.fieldType()); data.fields(ImmutableMap.of(name, fieldVisitor.fields().get(data.fieldType().names().indexName()))); } catch (IOException e) { throw new ElasticsearchParseException("failed to load field [{}]", e, name); } } return data; }
LeafFieldsLookup(MapperService mapperService, @Nullable String[] types, LeafReader reader) { this.mapperService = mapperService; this.singleType = mapperService.getIndexSettings().isSingleType(); this.types = types; this.reader = reader; this.fieldVisitor = new SingleFieldsVisitor(null); }
public void postProcess(MappedFieldType fieldType) { if (uid != null) { switch (field) { case UidFieldMapper.NAME: addValue(field, uid.toString()); case IdFieldMapper.NAME: addValue(field, uid.id()); case TypeFieldMapper.NAME: addValue(field, uid.type()); } } if (fieldsValues == null) { return; } List<Object> fieldValues = fieldsValues.get(fieldType.names().indexName()); if (fieldValues == null) { return; } for (int i = 0; i < fieldValues.size(); i++) { fieldValues.set(i, fieldType.valueForSearch(fieldValues.get(i))); } } }