#elasticsearch #nest
#elasticsearch #гнездо
Вопрос:
У меня есть два индекса, каждый из которых имеет свой собственный вид (разные формы) документа, но у меня есть требование, чтобы результаты поиска включали оба этих типа документов.
Из того, что я прочитал, что мне нужно сделать, это ковариантный поиск по двум индексам, поиск по нескольким индексам совсем не кажется сложным, но я понятия не имею, как выполнить ковариантный поиск в Elasticsearch 6.x. Все ответы на другие вопросы здесь SO для более старых версий,и документация по этому вопросу очень ограничена.
https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/covariant-search-results.html
Ответ №1:
В 5.x и ниже ковариантный поиск может быть реализован путем проверки типа каждого документа и десериализации соответствующего .Тип СЕТИ. Поскольку типы удаляются из Elasticsearch, ковариантный поиск в 6.x становится немного сложнее, и мы можем по существу использовать один из двух подходов
-
Используйте общий тип, который может представлять обе формы документа и десериализовать все свойства обоих типов. Это может быть что-то вроде
Dictionary<string, object>
or Json.NET’sJObject
-
Используйте сериализатор, который может десериализовать производные типы до общего базового типа на основе свойств в JSON. Например, с помощью Json.NET обрабатывает TypeNameHandling для включения
$type
поля дискриминатора в JSON, которое позже можно использовать для десериализации до правильного типа.