Как выполнить поиск по нескольким индексам с разными видами документов с помощью Nest ElasticSearch 6.x? - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть два индекса, каждый из которых имеет свой вид (разные формы) документа, но у меня есть требование, чтобы результаты поиска включали оба этих типа документов.

Из того, что я имеюпрочитайте, что мне нужно сделать, это ковариантный поиск по двум индексам, поиск по нескольким индексам не кажется сложным, но я не знаю, как выполнить ковариантный поиск в Elasticsearch 6.x.Ответы на все остальные вопросы здесь - это SO для более старых версий, и документация по этому вопросу очень ограничена.

https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/covariant-search-results.html

1 Ответ

0 голосов
/ 26 апреля 2019

В 5.x и ниже ковариантный поиск может быть реализован путем проверки типа каждого документа и десериализации до соответствующего типа .NET.С удалением типов из Elasticsearch ковариантные поиски в 6.x становятся немного сложнее, и мы можем по существу выбрать один из двух подходов

  1. Использовать общий тип, которыйможет представлять обе формы документа и десериализовать все свойства обоих типов.Это может быть что-то вроде Dictionary<string, object> или Json.NET JObject

  2. Использовать сериализатор, который может десериализовать производные типы в общий базовый тип на основе свойств в JSON.Например, используя TypeNameHandling в Json.NET для включения $type поля дискриминатора в JSON, которое впоследствии можно будет использовать для десериализации в правильный тип.

...