2015-09-09 13 views
23

elasticsearch wersja 1.4.5elasticsearch/Kibana 4: Pole istnieje, ale nie jest równa wartości

Kibana 4.1.1

logstash 1.5.2-1

Jak konstruować szukaj w zakładce odkrywania kibana 4, która zwraca wyniki tylko wtedy, gdy istnieje pole, ale nie jest ono równe określonej wartości?

Mam niektóre dane dziennika apache w logstash i chcę zwrócić wszystkie wpisy, które mają status_code zdefiniowane, ale nie równe 200. Więc jeśli możliwe wartości są {niezdefiniowane, 200, 403, 404, 500, itp.} I chciałby, aby wszystkie warianty 4xx i 5xx błędy ale nie wiadomości, których pole nie jest zdefiniowane, a nie tam, gdzie jest ona ustawiona na 200.

próbowałem następujące:

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

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

widzę też referencje do elastycznego wyszukiwania curl queries, ale nie jestem pewien, jak przekształcić je w coś, co mogę użyć w Kibana s pasek earch. Oto przykład:

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

Dzięki!

Odpowiedz

44

Zapytanie szukasz jest to jedno:

_exists_:status_code AND NOT status_code:200 

This link pokazuje wszystko, co jest poparte zapytaniami ciągu zapytania.

5

poprzedniej odpowiedzi jest dokładnie o to prosiłem, jednak może to być również przydatne:

status_code:[300 TO 600] 
Powiązane problemy