从 elasticsearch 索引中获取嵌套映射的类型
Get nested mappings' types from elasticsearch index
我有一个 elasticsearch 索引,其映射如下:
{
"indexName": {
"mappings": {
"vault": {
"properties": {
"someMapping": {
"dynamic": "true",
"properties": {
"A": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"B": {
"type": "float"
},
"C": {
"type": "float"
}
}
}
}
}
}
}
}
我需要获取嵌套映射的类型,例如:
[
{Name = "A", Type = "text"},
{Name = "B", Type = "float"},
{Name = "C", Type = "float"}
]
我需要通过 .NET Core 应用程序中的 NEST API 实现这一点。
到目前为止,我已经尝试 elasticClient.GetMapping(new GetMappingRequest())
但收效甚微,因为我无法访问我需要的字段的嵌套属性(在此示例中 "someMapping")
我通过以下步骤实现了我想要的:
- 通过以下方式获取弹性搜索实例中所有索引的映射:
allIndicesMappings = elasticClient.GetMapping(new GetMappingRequest()).Mappings
- 按名称过滤您想要的索引(可选)
- 对于筛选列表中的每个项目,您都可以获得所需的字段,如下所示:
item.Value.FirstOrDefault().Value.Properties.FirstOrDefault(x => x.Key.Name == "someMapping").Value
returns someMapping 字段,但我们仍然无法访问它的嵌套属性。我们可以通过将其转换为 ObjectProperty
来获得访问权限,如下所示:
((ObjectProperty)item.Value.FirstOrDefault().Value.Properties.FirstOrDefault(x => x.Key.Name == "metadata").Value).Properties
Properties
现在我们有了嵌套字段及其映射
我有一个 elasticsearch 索引,其映射如下:
{
"indexName": {
"mappings": {
"vault": {
"properties": {
"someMapping": {
"dynamic": "true",
"properties": {
"A": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"B": {
"type": "float"
},
"C": {
"type": "float"
}
}
}
}
}
}
}
}
我需要获取嵌套映射的类型,例如:
[
{Name = "A", Type = "text"},
{Name = "B", Type = "float"},
{Name = "C", Type = "float"}
]
我需要通过 .NET Core 应用程序中的 NEST API 实现这一点。
到目前为止,我已经尝试 elasticClient.GetMapping(new GetMappingRequest())
但收效甚微,因为我无法访问我需要的字段的嵌套属性(在此示例中 "someMapping")
我通过以下步骤实现了我想要的:
- 通过以下方式获取弹性搜索实例中所有索引的映射:
allIndicesMappings = elasticClient.GetMapping(new GetMappingRequest()).Mappings
- 按名称过滤您想要的索引(可选)
- 对于筛选列表中的每个项目,您都可以获得所需的字段,如下所示:
item.Value.FirstOrDefault().Value.Properties.FirstOrDefault(x => x.Key.Name == "someMapping").Value
returns someMapping 字段,但我们仍然无法访问它的嵌套属性。我们可以通过将其转换为ObjectProperty
来获得访问权限,如下所示:((ObjectProperty)item.Value.FirstOrDefault().Value.Properties.FirstOrDefault(x => x.Key.Name == "metadata").Value).Properties
Properties
现在我们有了嵌套字段及其映射