我是C#和Elastic搜索的新手。我有一个用户配置文件索引,我必须在C#应用程序中添加“isActive” bool(boolean) 参数。我正在尝试添加一个实现,以将isActive标志设置为True的用户以及在C#的Elastic查询中根本没有此标志的用户。但无法获取要添加到当前getUsers搜索查询中的确切查询。
我正在尝试从C#创建一个 flex 查询,其中在用户对象中不存在isActive属性或isActive为true。
任何帮助将非常感激。
最佳答案
您需要对带有术语查询的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)))))
)
)
)
关于c# - C#Elastic Search-需要向Elastic index对象添加新参数并将其默认值设置为所有其他对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61574283/