获取嵌套映射'来自elasticsearch索引的类型

时间:2018-06-07 10:48:26

标签: asp.net elasticsearch asp.net-core nest elasticsearch-5

我有一个弹性搜索索引,其映射如下:

{
  "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来实现这一点。 到目前为止,由于我无法访问我需要的字段的嵌套属性(在此示例中" someMapping")

1 个答案:

答案 0 :(得分:0)

我能够通过以下步骤实现我想要的目标:

  • 通过以下方式获取弹性搜索实例中所有索引的映射:allIndicesMappings = elasticClient.GetMapping(new GetMappingRequest()).Mappings
  • 按名称过滤所需的索引(可选)
  • 对于已过滤列表中的每个项目,您可以获得所需的字段: item.Value.FirstOrDefault().Value.Properties.FirstOrDefault(x => x.Key.Name == "someMapping").Value返回someMapping字段,但我们仍然无法访问它的嵌套属性。我们可以通过将其转换为ObjectProperty来获取该访问权限: ((ObjectProperty)item.Value.FirstOrDefault().Value.Properties.FirstOrDefault(x => x.Key.Name == "metadata").Value).Properties 现在在Properties中我们有嵌套字段及其映射