2015-09-09 18 views
23

elasticsearch versione 1.4.5elasticsearch/Kibana 4: campo esiste ma non è uguale a un valore

Kibana 4.1.1

logstash 1.5.2-1

Come faccio a strutturare un cerca nella scheda di scoperta di kibana 4 che restituisce risultati solo se esiste un campo ma non è uguale a un valore specifico?

devo alcuni dati di log di Apache in logstash e voglio tornare tutte le voci che si sono status_code definito ma non uguale a 200. Quindi, se i valori possibili sono {indefinito, 200, 403, 404, 500, etc} I vorrebbe vedere tutte le varianti di 4xx e 5xx errori ma non messaggi in cui il campo non è definito e non dove è impostato a 200.

ho provato quanto segue:

+status_code: (*) -status_code: (200) 

((status_code: (*) AND NOT status_code: (200)) 

vedo anche i riferimenti a elasticsearch curl queries ma non sono sicuro di come trasformarli in qualcosa che posso usare nelle kibana earch bar. Ecco un esempio:

{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "bool": { 
      "must": { 
      "exists": { 
       "field": "status_code" 
      } 
      }, 
      "must_not": { 
      "term": { 
       "status_code": '200' 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Grazie!

risposta

44

La query che stai cercando è questo:

_exists_:status_code AND NOT status_code:200 

This link vi mostra tutto ciò che è supportato da query di stringa di query.

5

La risposta precedente è esattamente quello che ho chiesto, tuttavia, questo può anche essere utile:

status_code:[300 TO 600]