В течение последних двух дней я боролся с соответствующим запросом, который я хочу передать моему ElasticClient. Позвольте мне показать мой пример.
У меня есть такой индексированный объект:
public class IndexCompany
{
[Keyword]
public Guid Id { get; set; }
...
[Text]
public string Name { get; set; }
[Keyword]
public List<Guid> ClientIds { get; set; }
[Keyword]
public List<Guid> NewsSubscriptions { get; set; }
}
Я ищу компании, в которых есть идентификатор клиента. Звучит довольно просто:
var result = ElasticClient.Search<IndexCompany>(a => a
.Query(q => q
.Match(m => m
.Field(f => f.ClientsIds)
.Query(clientId.ToString()));
Но когда я получаю результат, поле public List<Guid> ClientIds
содержит все другие идентификаторы; Мне это не нужно, например, это может быть более 100500 элементов.
Итак, мои вопросы:
- Что я должен добавить в свой запрос, чтобы исключить другие дополнительные идентификаторы из результата?
- Для поля
public List<Guid> NewsSubscriptions { get; set; }
У меня такая же ситуация, но если оно не содержит соответствующего идентификатора, должно возвращаться пустой список
Я пытался использовать агрегации, вложенные, термины, но я всегда получить тот же результат.
Буду признателен за совет или способ найти что попробовать. Или, если я ошибаюсь в своих идеях, пожалуйста, объясните.