我如何构建带有可选参数的 NEST 查询?
How can i construct a NEST query with optional parameters?
我正在使用 NEST .NET 客户端 (6.3.1),并尝试编写基于多个(可选)参数的搜索查询。
这是我目前得到的:
var searchResponse = await _client.SearchAsync<Listing>(s => s
.Query(qq =>
{
var filters = new List<QueryContainer>();
if (filter.CategoryType.HasValue)
{
filters.Add(qq.Term(p => p.CategoryType, filter.CategoryType.Value));
}
if (filter.StatusType.HasValue)
{
filters.Add(qq.Term(p => p.StatusType, filter.StatusType.Value));
}
if (!string.IsNullOrWhiteSpace(filter.Suburb))
{
filters.Add(qq.Term(p => p.Suburb, filter.Suburb));
}
return ?????; // what do i do her?
})
);
filter
是一个具有一堆可为空属性的对象。因此,无论有什么值,我都想添加为匹配查询。
所以,为了实现这一点,我正在尝试建立一个 QueryContainer
的列表(不确定这是正确的方法),但正在努力弄清楚如何 return AND 谓词列表。
有什么想法吗?
谢谢
最终使用对象初始化方法而不是 Fluent DSL 来完成它
var searchRequest = new SearchRequest<Listing>
{
Query = queries
}
queries
是一个 List<QueryContainer>
,我刚刚建立起来,像这样:
queries.Add(new MatchQuery
{
Field = "CategoryType",
Query = filter.CategoryType
}
我觉得有更好的方法,而且我不喜欢必须将 'Field' 硬编码为字符串的方式...但它有效。希望有人告诉我更好的方法!
我正在使用 NEST .NET 客户端 (6.3.1),并尝试编写基于多个(可选)参数的搜索查询。
这是我目前得到的:
var searchResponse = await _client.SearchAsync<Listing>(s => s
.Query(qq =>
{
var filters = new List<QueryContainer>();
if (filter.CategoryType.HasValue)
{
filters.Add(qq.Term(p => p.CategoryType, filter.CategoryType.Value));
}
if (filter.StatusType.HasValue)
{
filters.Add(qq.Term(p => p.StatusType, filter.StatusType.Value));
}
if (!string.IsNullOrWhiteSpace(filter.Suburb))
{
filters.Add(qq.Term(p => p.Suburb, filter.Suburb));
}
return ?????; // what do i do her?
})
);
filter
是一个具有一堆可为空属性的对象。因此,无论有什么值,我都想添加为匹配查询。
所以,为了实现这一点,我正在尝试建立一个 QueryContainer
的列表(不确定这是正确的方法),但正在努力弄清楚如何 return AND 谓词列表。
有什么想法吗?
谢谢
最终使用对象初始化方法而不是 Fluent DSL 来完成它
var searchRequest = new SearchRequest<Listing>
{
Query = queries
}
queries
是一个 List<QueryContainer>
,我刚刚建立起来,像这样:
queries.Add(new MatchQuery
{
Field = "CategoryType",
Query = filter.CategoryType
}
我觉得有更好的方法,而且我不喜欢必须将 'Field' 硬编码为字符串的方式...但它有效。希望有人告诉我更好的方法!