使用 Elastic Search 高级休息客户端获取类型映射
Get Mappings for type with Elastic Search high level rest client
我已将 Elastic 搜索从“2.3.4”升级到“7.10.0”。我想升级现有的获取特定索引和类型映射的代码。请参考下面的代码(旧的和新的)。
旧代码(2.3.4):
Map<String, Object> mappingMeta = client.admin().indices().prepareGetMappings("index1").get().mappings().get("index1").get("type1").getSourceAsMap();
新代码(7.10.0):
GetMappingsRequest mappingsRequest = new GetMappingsRequest();
mappingsRequest.indices("index1");
GetMappingsResponse mappingsResponse = client.indices().getMapping(mappingsRequest, RequestOptions.DEFAULT);
Map<String, Object> mappingMeta = mappingsResponse.mappings().get("index1").getSourceAsMap();
在新的代码更改中,我只能获取索引的映射。如何在 ES 7.10.0 中获取类型(旧代码中的“type1”)的映射?
经过一些研发发现,我们可以在 ES 7.x 版本中获取索引的字段映射,但不能获取类型,因为类型在 7.0 中的 API 中已弃用。
ES(6.7之前)GetMapping For Index and Type:
ImmutableOpenMap<String, ImmutableOpenMap<String, MappingMetaData>> allMappings = getMappingResponse.mappings();
MappingMetaData typeMapping = allMappings.get("index_name").get("type_name");
Map<String, Object> mapping = typeMapping.sourceAsMap();
ES 7.x GetMapping 仅用于索引:
Map<String, MappingMetadata> allMappings = getMappingResponse.mappings();
MappingMetadata indexMapping = allMappings.get("index_name");
Map<String, Object> mapping = indexMapping.sourceAsMap();
我已将 Elastic 搜索从“2.3.4”升级到“7.10.0”。我想升级现有的获取特定索引和类型映射的代码。请参考下面的代码(旧的和新的)。
旧代码(2.3.4):
Map<String, Object> mappingMeta = client.admin().indices().prepareGetMappings("index1").get().mappings().get("index1").get("type1").getSourceAsMap();
新代码(7.10.0):
GetMappingsRequest mappingsRequest = new GetMappingsRequest();
mappingsRequest.indices("index1");
GetMappingsResponse mappingsResponse = client.indices().getMapping(mappingsRequest, RequestOptions.DEFAULT);
Map<String, Object> mappingMeta = mappingsResponse.mappings().get("index1").getSourceAsMap();
在新的代码更改中,我只能获取索引的映射。如何在 ES 7.10.0 中获取类型(旧代码中的“type1”)的映射?
经过一些研发发现,我们可以在 ES 7.x 版本中获取索引的字段映射,但不能获取类型,因为类型在 7.0 中的 API 中已弃用。
ES(6.7之前)GetMapping For Index and Type:
ImmutableOpenMap<String, ImmutableOpenMap<String, MappingMetaData>> allMappings = getMappingResponse.mappings();
MappingMetaData typeMapping = allMappings.get("index_name").get("type_name");
Map<String, Object> mapping = typeMapping.sourceAsMap();
ES 7.x GetMapping 仅用于索引:
Map<String, MappingMetadata> allMappings = getMappingResponse.mappings();
MappingMetadata indexMapping = allMappings.get("index_name");
Map<String, Object> mapping = indexMapping.sourceAsMap();