Получить типы вложенных отображений из индекса эластичного поиска - PullRequest
0 голосов
/ 07 июня 2018

У меня есть индекс эластичного поиска с сопоставлениями, подобными следующим:

{
  "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"}
    ]

Мне нужно, чтобы это произошлочерез NEST API в приложении .NET Core.До сих пор я пробовал elasticClient.GetMapping(new GetMappingRequest()) без особого успеха, так как не могу получить доступ к вложенным свойствам нужного мне поля (в этом примере «someMapping»)

1 Ответ

0 голосов
/ 07 июня 2018

Мне удалось достичь того, что я хотел, с помощью следующих шагов:

  • Получить сопоставления для всех индексов в экземпляре упругого поиска с помощью: 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 теперь у нас есть вложенные поля и их отображения
...