【问题标题】:C# Elastic Search - Need to add new parameter to Elastic index object and set its default value to all the other objectsC# 弹性搜索 - 需要向弹性索引对象添加新参数并将其默认值设置为所有其他对象
【发布时间】:2020-05-03 21:02:53
【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 基本上你想过滤基于isActive标志的用户,我可以提供JSON格式的搜索查询,因为我不熟悉c#语法,但它应该很简单如果您的代码中已经有一些过滤器,并且一旦搜索 JSON 就可以正常工作

标签: c# elasticsearch


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-08-30
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多