web-dev-qa-db-fra.com

Comment faire un filtrage de type "là où il n'y en a pas" dans Kibana/ELK?

J'utilise ELK pour créer des tableaux de bord à partir de mes fichiers journaux. J'ai un fichier journal avec des entrées contenant une valeur id et une valeur "succès"/"échec", indiquant si une opération avec un identifiant donné a réussi ou échoué. Chaque opération/ID peut échouer un nombre illimité de fois et réussir au plus une fois. Dans mon tableau de bord Kibana, je souhaite afficher le nombre d'entrées de journal avec une valeur "échec" pour chaque ID d'opération, mais je souhaite filtrer les cas où une entrée de journal "succès" existe pour l'identifiant. c'est-à-dire que je ne m'intéresse qu'aux opérations qui n'ont jamais abouti. Des astuces pour y parvenir?

26
Anton Kupias

C'est facile dans la barre de recherche de Kibana 5. Il suffit d'ajouter un filtre

!(_exists_:"your_variable") 

vous pouvez basculer le filtre ou écrire la requête inverse en tant que 

_exists_:"your_variable"

Dans Kibana 4 et Kibana 3, vous pouvez utiliser cette requête qui est maintenant obsolète 

_missing_:"your_variable"  
78
Mlalahoi

! (_exists_:NAME) ne fonctionne pas pour moi. J'utilise la suggestion de:

https://discuss.elastic.co/t/kibana-5-0-0--missing--is-not-working-anymore/64336

NOT _exists_:NAME

UPDATE Le problème que j'ai rencontré est que la syntaxe ES interdit les espaces après les opérateurs de négation. Les suivants sont les mêmes:

NOT _exists_:FIELD
!_exists_:FIELD
-_exists_:FIELD

Voir le tutoriel: https://www.timroes.de/2016/05/29/elasticsearch-kibana-queries-in-depth-tutorial/

1
gavenkoa