web-dev-qa-db-fra.com

Elasticsearch requête avec une requête différente de?

Habituellement, avec une requête query_string dans elasticsearch, je peux faire:

name:"Fred"

Je veux trouver tous les documents dont le nom n'est pas égal à Fred. Quelle est la syntaxe appropriée pour cela? J'ai essayé:

name!="Fred"

Bien qu'il renvoie 0 documents.

26
Rolando

Vous devez utiliser le NOT opérateur , comme ceci:

!(name:"Fred")

ou

NOT (name:"Fred")
45
Val

Vous devez utiliser une requête booléenne avec l'instruction must_not

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

Vous pouvez également utiliser une combinaison de must et must_not. Comme Pull Docs où le nom est Ajit et le statut n'est pas en file d'attente.

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

et, ou et non filtres

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" }
                }
            }
        }
    }
}
1
Om Prakash