如何使用可选参数构建NEST查询?

时间:2018-10-18 05:52:47

标签: elasticsearch nest

我正在使用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的列表(不确定这是正确的方法),但是努力弄清楚如何将其作为AND谓词列表返回。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

最终使用对象初始化方法而不是Fluent DSL来完成此操作。”

var searchRequest = new SearchRequest<Listing>
{
   Query = queries
}

queries是一个List<QueryContainer>,我刚刚建立,就像这样:

queries.Add(new MatchQuery
{
   Field = "CategoryType",
   Query = filter.CategoryType
}

我觉得有更好的方法,而且我不喜欢将'Field'硬编码为字符串的方式...但是可以。希望有人给我看个更好的方法!

相关问题