Peut-être est une question très stupide, quel est le meilleur moyen de vérifier si un champ d’un document existe dans elasticsearch? Je ne trouve rien dans la documentation.
Par exemple, si ce document n'a pas le champ/clé "price", je ne souhaite pas renvoyer le résultat.
{ "updated": "2015/09/17 11:27:27", "nom": "Ombre à paupières", "format": "1,5 g/0,05 oz", }
Qu'est-ce que je peux faire?
Merci
Vous pouvez utiliser le filtre exists
combiné avec un filtre bool/must
comme ceci:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"exists": {
"field": "price"
}
},
... <-- your other constraints, if any
]
}
}
}
}
}
DEPRECATED (depuis ES5) Vous pouvez également utiliser le filtre missing
combiné à un filtre bool/must_not
:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must_not": [
{
"missing": {
"field": "price"
}
}
]
}
}
}
}
}
Le filtre exists
a été remplacé par exists
query à partir d'ES 2.1, mais son fonctionnement est identique. En outre, le filtre manquant est supprimé et la requête manquante est déconseillée.
Pour obtenir tous les documents qui ont un domaine particulier,
"bool": {
"must": {
"exists": {
"field": "my_field"
}
}
}
et pour obtenir tous les documents qui n'ont PAS un champ particulier, utilisez-le avec must_not
comme ceci
"bool": {
"must_not": {
"exists": {
"field": "my_field"
}
}
}
Documents élastiques: https://www.elastic.co/guide/fr/elasticsearch/reference/2.3/query-dsl-missing-query.html
Vous pouvez utiliser le filtre existe:
{
"query": {
"filtered": {
"filter": {
"exists": {
"field": "status"
}
},
"query": {
"match_all": {}
}
}
}
}
Cordialement, Alain
Vous pouvez faire directement
{
"query": {
"exists": {
"field": "fieldName"
}
}
}
Si vous voulez ajouter un match aussi, alors vous pouvez aller chercher
{
"query": {
"bool": {
"must": [{
"match": {
"fieldName": "value"
}
},
{
"exists": {
"field": "fieldName"
}
}]
}
}
}
https://www.elastic.co/guide/fr/elasticsearch/reference/current/query-dsl-exists-query.html
GET /_search
{
"query": {
"exists" : { "field" : "price" }
}
}
source: https://www.elastic.co/guide/fr/elasticsearch/reference/current/query-dsl-exists-query.html