in seatunnel-datasource/seatunnel-datasource-plugins/datasource-elasticsearch/src/main/java/org/apache/seatunnel/datasource/plugin/elasticsearch/client/EsRestClient.java [285:325]
public Map<String, String> getFieldTypeMapping(String index) {
String endpoint = String.format("/%s/_mappings", index);
Request request = new Request("GET", endpoint);
Map<String, String> mapping = new HashMap<>();
try {
Response response = restClient.performRequest(request);
if (response == null) {
throw new ResponseException("GET " + endpoint + " response null");
}
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
throw new ResponseException(
String.format(
"GET %s response status code=%d",
endpoint, response.getStatusLine().getStatusCode()));
}
String entity = EntityUtils.toString(response.getEntity());
log.info(String.format("GET %s response=%s", endpoint, entity));
ObjectNode responseJson = JsonUtils.parseObject(entity);
for (Iterator<JsonNode> it = responseJson.elements(); it.hasNext(); ) {
JsonNode indexProperty = it.next();
JsonNode mappingsProperty = indexProperty.get("mappings");
if (mappingsProperty.has("mappingsProperty")) {
JsonNode properties = mappingsProperty.get("properties");
mapping = getFieldTypeMappingFromProperties(properties);
} else {
for (JsonNode typeNode : mappingsProperty) {
JsonNode properties;
if (typeNode.has("properties")) {
properties = typeNode.get("properties");
} else {
properties = typeNode;
}
mapping.putAll(getFieldTypeMappingFromProperties(properties));
}
}
}
} catch (IOException ex) {
throw new ResponseException(ex);
}
return mapping;
}