Elasticsearch查询字符串查询不等于?

Rol*_*ndo 27 elasticsearch

通常在elasticsearch中使用query_string查询,我可以这样做:

name:"Fred"
Run Code Online (Sandbox Code Playgroud)

我想找到名字不等于Fred的所有文件.那个正确的语法是什么?我试过了:

name!="Fred"
Run Code Online (Sandbox Code Playgroud)

虽然它返回0个文件.

Vol*_*hat 52

您应该使用bool查询和must_not语句

{
  "query": {
    "bool" : {
      "must_not" : {
        "term" : {
          "name" : "Fred"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Val*_*Val 50

您需要使用NOT运算符,如下所示:

!(name:"Fred")
Run Code Online (Sandbox Code Playgroud)

要么

NOT (name:"Fred")
Run Code Online (Sandbox Code Playgroud)

  • 对于那些想知道如何连接多个值“NOT(key:value1 value2 value3)”的人 (9认同)

小智 8

您还可以结合使用must和must_not。就像名称为Ajit且状态未排队的pull docs。

    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "name": "Ajit"
                    }
                }
            ],
            "must_not": [
                {enter code here
                    "match": {
                        "status": "queued"
                    }
                }
            ]
        }
    }
}```
Run Code Online (Sandbox Code Playgroud)


Om *_*ash 5

and、or 和 not 过滤器


对于“与”查询:

{
    "filtered" : {
        "query" : {
            "term" : { "name.first" : "shay" }
        },
        "filter" : {
            "and" : {
                "filters" : [
                    {
                        "term" : { "name.first" : "something" }
                    },
                    {
                        "term" : { "name.first" : "other" }
                    }
                ]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于“或”查询:

{
    "filtered" : {
        "query" : {
            "term" : { "name.first" : "shay" }
        },
        "filter" : {
            "or" : {
                "filters" : [
                    {
                        "term" : { "name.first" : "something" }
                    },
                    {
                        "term" : { "name.first" : "other" }
                    }
                ]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于“非”查询:

{
    "filtered" : {
        "query" : {
            "term" : { "name.first" : "shay" }
        },
        "filter" : {
            "not" : {
                "filter" :  {
                    "term" : { "name.first" : "someting" }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)