我如何构建带有可选参数的 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' 硬编码为字符串的方式...但它有效。希望有人告诉我更好的方法!