Я новичок в ElasticSearch, и я использую NEST для запуска моих запросов. Мне нужно иметь возможность добавить X количество фильтрующих терминов в мой запрос.C# Nest - ElasticSearch
На данный момент мой запрос выглядит следующим образом:
var page = new Page
{
Id = 1,
Name = "JR-11 Hyper black"
};
var tags = new Dictionary<string, string[]>
{
{ "Size", new[] { "16", "17", "18" }},
{ "Color", new[] { "Bronze", "Hyper Black", "Flat Black" }}
};
page.Tags = tags;
ElasticClient.Index(page, idx => idx.Index("pages"));
var result = ElasticClient.Search<Page>(
body => body.Query(query => query.ConstantScore(
csq => csq.Filter(filter => filter.Term("tags.Size", "17"))))
.Take(1000));
var pages = result.Documents.ToList();
Проблема у меня есть с csq.Filter(filer => filter.Term("tags.Storlek")
мне нужно, чтобы иметь возможность добавить динамическое количество таких фильтров. Не могу найти ничего в документации для версии 2.3, которую я использую.
Спасибо! Но что должны содержать фильтры? И не следует ли объединять фильтры в какой-то части? Вместо того, чтобы перезаписывать внутри петли? –
Ну, 'filterTerm' определяется вами, конечно. Вы хотите динамическое количество фильтров, так что вы определяете их. «Комбинированные фильтры» перезаписаны, да, но с объектом, который содержит уже определенные фильтры, а также недавно добавленный фильтр. Часто реализации фактически возвращают один и тот же объект. См. Https://en.wikipedia.org/wiki/Fluent_interface для получения дополнительной информации о свободном интерфейсе. –