org.elasticsearch.action.admin.cluster.stats.MappingVisitor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of elasticsearch Show documentation
Show all versions of elasticsearch Show documentation
Elasticsearch subproject :server
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
package org.elasticsearch.action.admin.cluster.stats;
import java.util.Map;
import java.util.function.BiConsumer;
public final class MappingVisitor {
private MappingVisitor() {}
public static void visitMapping(Map mapping, BiConsumer> fieldMappingConsumer) {
visitMapping(mapping, "", fieldMappingConsumer);
}
private static void visitMapping(
final Map mapping,
final String path,
final BiConsumer> fieldMappingConsumer
) {
Object properties = mapping.get("properties");
if (properties instanceof Map) {
@SuppressWarnings("unchecked")
Map propertiesAsMap = (Map) properties;
for (Map.Entry entry : propertiesAsMap.entrySet()) {
final Object v = entry.getValue();
if (v instanceof Map) {
@SuppressWarnings("unchecked")
Map fieldMapping = (Map) v;
final String prefix = path + entry.getKey();
fieldMappingConsumer.accept(prefix, fieldMapping);
visitMapping(fieldMapping, prefix + ".", fieldMappingConsumer);
// Multi fields
Object fieldsO = fieldMapping.get("fields");
if (fieldsO instanceof Map) {
@SuppressWarnings("unchecked")
Map fields = (Map) fieldsO;
for (Map.Entry subfieldEntry : fields.entrySet()) {
Object v2 = subfieldEntry.getValue();
if (v2 instanceof Map) {
@SuppressWarnings("unchecked")
Map fieldMapping2 = (Map) v2;
fieldMappingConsumer.accept(prefix + "." + subfieldEntry.getKey(), fieldMapping2);
}
}
}
}
}
}
}
public static void visitRuntimeMapping(Map mapping, BiConsumer> runtimeFieldMappingConsumer) {
Object runtimeObject = mapping.get("runtime");
if (runtimeObject instanceof Map == false) {
return;
}
@SuppressWarnings("unchecked")
Map runtimeMappings = (Map) runtimeObject;
for (Map.Entry entry : runtimeMappings.entrySet()) {
final Object runtimeFieldMappingObject = entry.getValue();
if (runtimeFieldMappingObject instanceof Map == false) {
continue;
}
@SuppressWarnings("unchecked")
Map runtimeFieldMapping = (Map) runtimeFieldMappingObject;
runtimeFieldMappingConsumer.accept(entry.getKey(), runtimeFieldMapping);
}
}
}