首页 > 解决方案 > C# 弹性搜索 - 需要向弹性索引对象添加新参数并将其默认值设置为所有其他对象

问题描述

我是 C# 和 Elastic 搜索的新手。我有一个用户配置文件索引,我必须在 C# 应用程序中添加“isActive”布尔参数。我正在尝试添加一个实现,以获取将 isActive 标志设置为 True 的用户以及在来自 c# 的弹性查询中根本没有此标志的用户。但无法获得要添加到当前 getUsers 搜索查询的确切查询。

我正在尝试从 C# 创建一个弹性查询,其中用户对象中不存在 isActive 属性或 isActive 为真。

任何帮助将非常感激。

标签: c#elasticsearch

解决方案


您需要带有术语查询的 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)))))
                                )
                          )
                    )


推荐阅读