gpt4 book ai didi

c# - C#Nest-ElasticSearch

转载 作者:行者123 更新时间:2023-12-03 00:14:52 26 4
gpt4 key购买 nike

我是ElasticSearch的新手,并且正在使用NEST运行查询。我需要能够向查询中添加X个过滤条件。

现在,我的查询看起来像这样:

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版本的文档中找不到任何内容。

最佳答案

Fluent API应该允许这样的事情:

string[] filterTerms = { ... };

var result = ElasticClient.Search<Page>(
body => body.Query(query => query.ConstantScore(
csq =>
{
var combinedFilters = csq.Filter(filter => filter.Term("tags.Size", "17" ));

// add an additional, dynamic amount of filters
foreach (string filterTerm in filterTerms)
combinedFilters = combinedFilters.Filter(filter => filter.Term(filterTerm, ...));

return combinedFilters;
}))
.Take(1000));

关于c# - C#Nest-ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37141102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com