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

时间:2015-06-22 11:32:06

标签: elasticsearch nest

我正在尝试使用Elasticsearch c#NEST库构建查询。 我在SQL中有一个表,可以说它叫做Mail。我需要确保一个字段在查询中不等于另一个字段。

在SQL中:

SELECT * FROM MAILS
WHERE Field_A != Field_B

我应该如何使用c#NEST?

1 个答案:

答案 0 :(得分:1)

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