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。
我正在尝试使用 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。