elasticsearch Elasticsearch C#嵌套与其他字段值不匹配,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch Elasticsearch C#嵌套与其他字段值不匹配,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch Elasticsearch C#嵌套与其他字段值不匹配

elasticsearch Elasticsearch C#嵌套与其他字段值不匹配,elasticsearch,nest,elasticsearch,Nest,我正在尝试使用Elasticsearch C#NEST库构建一个查询。 我在SQL中有一个表,比方说它叫Mail。我需要确保查询中的一个字段不等于另一个字段 在SQL中: SELECT * FROM MAILS WHERE Field_A != Field_B 我应该如何使用C#NEST?Elasticsearch不适用于这种类型的功能,您可以更好地研究更有效的方法来设置项目,以便能够处理此问题,但是有一些工具可以让您以这种查询形式进行定位 虽然基本查询语法不包含比较字段,但脚本可以让您解决这

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

在SQL中:

SELECT * FROM MAILS
WHERE Field_A != Field_B

我应该如何使用C#NEST?

Elasticsearch不适用于这种类型的功能,您可以更好地研究更有效的方法来设置项目,以便能够处理此问题,但是有一些工具可以让您以这种查询形式进行定位

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

下面是使用嵌套的脚本示例:

.Query(q=>q
    .Term(w => w.MatchAll())
        .Filter(s => s.Script(sf => sf.Script("doc['mails.field_A'].value == doc['mails.field_B'].value"))
)
{
    "query": {
        "filtered": {
            "filter": {
                "script": {
                    "script": "doc['mails.field_A'].value == doc['mails.field_B'].value"
                }
            }
        }
    }
}
下面是脚本不使用嵌套的示例:

.Query(q=>q
    .Term(w => w.MatchAll())
        .Filter(s => s.Script(sf => sf.Script("doc['mails.field_A'].value == doc['mails.field_B'].value"))
)
{
    "query": {
        "filtered": {
            "filter": {
                "script": {
                    "script": "doc['mails.field_A'].value == doc['mails.field_B'].value"
                }
            }
        }
    }
}
如果script.disable\u dynamic设置为false,则此函数将起作用。可能会出现一些问题。

这一点应该对您有所帮助