【问题标题】:Get nested mappings' types from elasticsearch index从 elasticsearch 索引获取嵌套映射的类型
【发布时间】:2018-11-17 06:08:24
【问题描述】:

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

{
  "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”)

【问题讨论】:

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


    【解决方案1】:

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

    • 获取弹性搜索实例中所有索引的映射: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).PropertiesProperties 现在我们有了嵌套字段及其映射

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多