Сопоставить вложенные поля с полями верхнего уровня в Elasticsearch - PullRequest
1 голос
/ 23 сентября 2019

У меня есть экземпляр Elasticsearch, где он инициализируется с помощью файла JSON, содержащего определения полей.Затем я заполняю список объектов POCO и, используя NEST, вызываю IndexManyAsync для вставки или обновления документов.Все это прекрасно работает.Теперь у меня есть небольшой список динамических полей, которые со временем будут добавлены в индекс.Я пытаюсь найти решение, которое не требует перекомпиляции моего класса POCO всякий раз, когда нужно добавить новое поле.Единственное решение, которое я придумал, это добавить поле словаря "AdditionalInfo" в объект POCO.Недостатком этого подхода является то, что динамические поля добавляются в качестве подполей в AdditionalInfo:

"additionalInfo" : {
    "$type" : "System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib]], mscorlib",
    "hello" : [
      "WORLD",
      "Everyone!"
    ],
    "foo" : [
      "BAR"
    ]
}

Есть ли способ заставить Elasticsearch игнорировать "AdditionalInfo", чтобы подполя становились полями корневого уровня?Или есть лучший способ для моделирования динамических полей в классе POCO?

...