Changes

Centralized logging in swarm

2,971 bytes added, 18:51, 22 September 2018
multi-value numeric metrics aggregation
* Stats aggregáció (statisztika egy mezőről)
* Extended Stats Aggregation
* MinimumPercentiles Aggregation* ...
<br>
'''stats'''<br>
A legegyszerűbb a '''stats ''' aggregáció, ami nem csinál mást, mint a dokumentum halmazban egy kiválasztott mezőre visszaadja a következő statisztikát: ''darabszám, min, max, átlag, és summa'', tehát ez nem más mint a négy alap single-value aggregáció ötvözése. Maradva a bankos példánál, nézzük meg a '''age''' mezőre a statisztikát. Nevezzük el az aggregációnkat '''age_stats'''-nak: <pre>curl -X POST "192.168.123.71:9200/bank/_search?size=0&pretty" -H 'Content-Type: application/json' -d'{ "aggs" : { "age_stats" : { "stats" : { "field" : "age" } } }}'</pre>
A válasz 5 előre rögzített mezőt tartalmaz:
<pre>
"aggregations" : {
"age_stats" : {
"count" : 1000,
"min" : 20.0,
"max" : 40.0,
"avg" : 30.171,
"sum" : 30171.0
}
}
</pre>
 
<br>
'''Percentiles Aggregation'''<br>
Egy mintában a kiugró értékek megkeresésére szolgál. A teljes halmazt növekvő sorrendbe rendezi, majd megmutatja, hogy milyen elem van pl a halmaz hosszának a felénél, a halmaz hosszának a 90%-ánál és a 99%-ánál. Mivel a halmaz rendezett, tudhatjuk, hogy a 70%-hoz tartozó értéknél a halmazban az elemek 70%-a kisebb. Ezeket a %-okat mi határozhatjuk meg. Tipikusan a nagyobb százalékok lehetnek fontosabbak. A képlet az alábbi:
my_array[count(my_array) * (százalékos érték, pl 70%)/100]
 
Ez pl válaszidőknél sokkal személetesebb mint a min/max/átlag, amiből gyakran nem látszik hogy baj van. Pl adott a következő rendezett halmazunk (amik szimbolizáljanak válaszidőket másodpercben):
{1,2,3,4,4,5,5,6,10,20}
Azt szeretnénk tudni, hogy a kérések 70%-át maximum mekkora válaszidővel tudtuk kiszámolni:
my_array[count(my_array) * 0.7] = 6
Tehát itt a 7. elemét kell vegyük ehhez a halmaznak, tehát a kérések 70%-át 6 másodpercen belül ki tudtuk szolgálni.
 
 
A percentiles aggregációt a '''percentiles''' kulcsszóval kell definiálni. A keresett százalékokat a percents tömbbel kell megadni, itt növekvő sorrendben kell felsorolni számokat 0.1 és 99.9 között. Nézzük a szokásos banki életkor példát.
<pre>
curl -X GET "192.168.123.71:9200/bank/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 0,
"aggs" : {
"age_perc" : {
"percentiles" : {
"field" : "age",
"percents" : [1.0, 5.0, 25.0, 50.0, 75.0, 95.0, 99.0]
}
}
}
}
'
</pre>
 
 
A válaszban a stat aggregációval ellentétben nem egy fix adatszerkezet van, hanem egy dinamikus value lista, minden egyes a percents tömbben megadott százalékhoz tartozik egy érték. A percents tömb megadás nem kötelező, ha nem adjuk meg, pont ez az alapértelmezett felosztás. <br>
Azt láthatjuk, hogy 75% -a a banki ügyfeleknek nem idősebb mint 35 év. És így tovább.
<pre>
"aggregations" : {
"age_perc" : {
"values" : {
"1.0" : 20.0,
"5.0" : 21.0,
"25.0" : 25.0,
"50.0" : 31.0,
"75.0" : 35.0,
"95.0" : 39.0,
"99.0" : 40.0
}
}
}
</pre>
<br>
==Bucket aggregation==
<br>
==Pipeline aggregation==
 
<br>
==Matrix aggregations==
 
 
 
<br>
<br>
=Kibana Web interface=