c# - C# 弹性搜索 - 需要向弹性索引对象添加新参数并将其默认值设置为所有其他对象
问题描述
我是 C# 和 Elastic 搜索的新手。我有一个用户配置文件索引,我必须在 C# 应用程序中添加“isActive”布尔参数。我正在尝试添加一个实现,以获取将 isActive 标志设置为 True 的用户以及在来自 c# 的弹性查询中根本没有此标志的用户。但无法获得要添加到当前 getUsers 搜索查询的确切查询。
我正在尝试从 C# 创建一个弹性查询,其中用户对象中不存在 isActive 属性或 isActive 为真。
任何帮助将非常感激。
解决方案
您需要带有术语查询的 should 子句(OR)来检查 IsActive ==true 和 must_not 子句来检查字段是否存在
var searchResponse = _elasticClient.Search<Project>(s => s
.Query(q => q
.Bool(b => b
.Should(
sh => sh.Term(t => t.IsActive, true),
sh => sh.Bool(bl => bl.MustNot(mn => mn.Exists(e => e.Field(et => et.IsActive)))))
)
)
)
推荐阅读
- r - 使用组外的组合完成组内的数据框
- html - 图像映射的 HTML 替代文本
- javascript - 配置 Electron 以使用某个 NodeJS 版本
- python - 通过用前一个值填充中间的值来增加数组的大小
- c# - ASP.NET Core 控制器路由属性继承和抽象控制器操作 - AmbiguousActionException
- python - 一次更改一个数组值
- java - 动态更改 TrayIcon 菜单项的启用状态
- python - 如何停止scrapy 301重定向并停止解析重定向页面
- opencl - SIMD Work Group、Block Size 对 FPGA 上内核执行时间的影响
- python - 输出值不正确