2017-06-15 5 views
1

(Ich bin ganz zu ELK Stapel neu und kann etwas offensichtlich ... fragen)Verwenden von Filtern zum Zählen von Werten in Kibana/Visualize?

Ich habe Dokumente Kunden Informationen zu beschreiben, mit Daten wie Name, Adresse, Alter, etc ... Manchmal sind nicht alle diese Felder existieren und ich möchte die Anzahl der Dokumente wissen, die sie gefüllt haben.

Wenn die Daten wie folgt aussieht:

PUT customers 
{ 
    "mappings": { 
    "customer": { 
     "properties": { 
     "id": { 
      "type": "integer" 
     }, 
     "category": { 
      "type": "keyword" 
     }, 
     "email": { 
      "type": "text" 
     }, 
     "age": { 
      "type": "integer" 
     }, 
     "address": { 
      "type": "text" 
     } 
     } 
    } 
    } 
} 


POST _bulk 
{"index":{"_index":"customers","_type":"customer"}} 
{"id":"1","category":"aa","email":"[email protected]"} 
{"index":{"_index":"customers","_type":"customer"}} 
{"id": "2", "category" : "aa", "age": "5"} 
{"index":{"_index":"customers","_type":"customer"}} 
{"id": "3", "category" : "aa", "email": "[email protected]", "age": "36"} 
{"index":{"_index":"customers","_type":"customer"}} 
{"id": "4", "category" : "bb", "email": "[email protected]", "age": "42", "address": "london"} 

Die Idee in zu haben ist Kibana zu visualisieren eine Datentabelle wie:

+----------+-------+-------+-----+---------+ 
| category | total | email | age | address | 
+----------+-------+-------+-----+---------+ 
| aa  |  3 |  2 | 2 |  0 | 
| bb  |  1 |  1 | 1 |  1 | 
+----------+-------+-------+-----+---------+ 

(zB: Wir haben drei Kunden in der Kategorie „aa "; unter ihnen gaben 2 ihre E-Mail, 2 gaben ihr Alter, keiner gab seine Adresse)

Ich kann herausfinden, wie man das mit einer Frage tut wie:

POST /customers/_search?size=0 
{ 
    "aggs": { 
    "category": { 
     "terms": { 
     "field": "category" 
     }, 
     "aggs": { 
     "count_email": { 
      "filter": { 
      "exists": { 
       "field": "email" 
      } 
      } 
     }, 
     "count_age": { 
      "filter": { 
      "exists": { 
       "field": "age" 
      } 
      } 
     }, 
     "count_address": { 
      "filter": { 
      "exists": { 
       "field": "address" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Aber ich kann nicht finden, wie wir das in Kibana Visualize tun können. Sollte ich Skriptfelder verwenden? JSON-Eingänge? Wie ? Gibt es einen besseren Weg?

Danke für Ihre Ratschläge.

+0

Dies gibt Ihnen nicht die richtige Tabelle? Was sind die Ergebnisse? – AnthonyJClink

+0

Ich habe meine Antwort aktualisiert, um eine Start-URL für Kibana zu enthalten ... ist das näher an dem, was du brauchst? – AnthonyJClink

Antwort

0

In der Benutzeroberfläche konnte ich die Zeilen mit dem Keyword-Begriff Filter teilen.

Unten finden Sie eine URL, mit der Sie beginnen können.

Der Aufruf erstellt eine Datentabelle, aggregiert nach Anzahl und teilt Zeilen nach Kategorie Keyword-Begriff.

http://localhost:5601/app/kibana#/visualize/create?type=table&indexPattern=customers&_g=()&_a=(filters:!(),linked:!f,query:(query_string:(analyze_wildcard:!t,query:'*')),uiState:(vis:(params:(sort:(columnIndex:!n,direction:!n)))),vis:(aggs:!((enabled:!t,id:'1',params:(),schema:metric,type:count),(enabled:!t,id:'2',params:(field:category.keyword,order:desc,orderBy:_term,size:2),schema:bucket,type:terms)),listeners:(),params:(perPage:10,showMeticsAtAllLevels:!f,showPartialRows:!f,showTotal:!f,sort:(columnIndex:!n,direction:!n),totalFunc:sum),title:'CategoryTable',type:table)) 
+0

Thx für Ihre Antwort. Um Missverständnisse zu vermeiden, habe ich die Frage mit der Indexbeschreibung aktualisiert. Wo gibt es eigentlich keinen Array-Datentyp (was scheint die Situation zu sein, wo "geschachtelte" Typ ist nützlich?). – irimias

+0

Ich sehe das jetzt ... mit der Änderung sehe ich nichts falsch mit Ihrem Code. Welches Ergebnis bekommst du? Geben Sie mir ein paar Minuten, um den Stapel zu installieren und schlecht einrichten Ihr Szenario – AnthonyJClink

+0

die Suchanfrage, die ich in die Frage gebe gibt die erwarteten Ergebnisse, aber meine Frage ist in der Lage, das in Kibana/Visualize reproduzieren. – irimias

Verwandte Themen