Elasticsearch C# NEST 不匹配其他字段值

Elasticsearch C# NEST not match other field value

我正在尝试使用 Elasticsearch C# NEST 库构建查询。 我在 SQL 中有一个 table,假设它叫做 Mail。我需要确保一个字段不等于查询中的另一个字段。

在SQL中:

SELECT * FROM MAILS
WHERE Field_A != Field_B

我应该如何使用 C# NEST 来实现?

Elasticsearch 不适用于此类功能,您最好寻找更有效的方法来设置您的项目以便能够处理此问题,但是有一些工具可以让您以这种形式硬塞查询。

虽然基本查询语法不包含比较字段,但脚本可以让您解决这个问题。

这是一个使用 NEST 的脚本示例:

.Query(q=>q
    .Term(w => w.MatchAll())
        .Filter(s => s.Script(sf => sf.Script("doc['mails.field_A'].value == doc['mails.field_B'].value"))
)

这里是一个使用 NEST 没有 的脚本示例:

{
    "query": {
        "filtered": {
            "filter": {
                "script": {
                    "script": "doc['mails.field_A'].value == doc['mails.field_B'].value"
                }
            }
        }
    }
}

如果 script.disable_dynamic 设置为 false,这将起作用。可能会出现一些 security issues