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
's 列表(不确定这是正确的方法),但努力弄清楚如何将其作为 AND 谓词列表返回。
有任何想法吗?
谢谢
解决方案
最终通过使用 object initialisez 方法而不是 Fluent DSL 来做到这一点“
var searchRequest = new SearchRequest<Listing>
{
Query = queries
}
queries
是一个List<QueryContainer>
,我刚刚建立起来,像这样:
queries.Add(new MatchQuery
{
Field = "CategoryType",
Query = filter.CategoryType
}
我觉得有更好的方法,我不喜欢我必须将“字段”硬编码为字符串......但它有效。希望有人告诉我一个更好的方法!
推荐阅读
- azure - Azure Blockchain Workbench 应用程序未显示在企业应用程序中
- templates - Bitbucket 和 Ionic Pro 使用的管理模板
- apache-flink - 在 Yarn 上运行 Flink 1.5
- sorting - 猫鼬按不同集合中对象ID的计数排序
- unit-testing - 获取数据库连接的连接字符串
- php - 样式化php?试图从导航栏中删除样式,用于 php 实时搜索链接
- phoenix-framework - 长生不老药/凤凰“魔法”路径
- python - Pyspark 错误:“Py4JJavaError:调用 o655.count 时出错。” 在数据帧上调用 count() 方法时
- c++ - 连接的组件程序产生不正确的输出
- symfony - Symfony - Twig 模板中的服务