Запрос строки запроса elasticsearch с не равным?

Обычно с запросом query_string в elasticsearch я могу сделать:

name:"Fred"

Я хочу найти все документы, где имя не равно Fred. Каков правильный синтаксис для этого? Я пробовал:

name!="Fred"

Хотя он возвращает 0 документов.

Ответ 1

Вам нужно использовать оператор NOT, например:

!(name:"Fred")

или

NOT (name:"Fred")

Ответ 2

Вы должны использовать bool-запрос с инструкцией must_not

{
  "query": {
    "bool" : {
      "must_not" : {
        "term" : {
          "name" : "Fred"
        }
      }
    }
  }
}

Ответ 3

и, а не фильтры

and:

{
    "filtered" : {
        "query" : {
            "term" : { "name.first" : "shay" }
        },
        "filter" : {
            "and" : {
                "filters" : [
                    {
                        "term" : { "name.first" : "something" }
                    },
                    {
                        "term" : { "name.first" : "other" }
                    }
                ]
            }
        }
    }
}
or:

{
    "filtered" : {
        "query" : {
            "term" : { "name.first" : "shay" }
        },
        "filter" : {
            "or" : {
                "filters" : [
                    {
                        "term" : { "name.first" : "something" }
                    },
                    {
                        "term" : { "name.first" : "other" }
                    }
                ]
            }
        }
    }
}
not:

{
    "filtered" : {
        "query" : {
            "term" : { "name.first" : "shay" }
        },
        "filter" : {
            "not" : {
                "filter" :  {
                    "term" : { "name.first" : "someting" }
                }
            }
        }
    }
}

Ответ 4

Вы также можете использовать комбинацию must и must_not. Как и в документах по запросу, где имя Ajit, а статус не ставится в очередь.

    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "name": "Ajit"
                    }
                }
            ],
            "must_not": [
                {enter code here
                    "match": {
                        "status": "queued"
                    }
                }
            ]
        }
    }
}'''