Skip to content

COUNT og GROUP BY i Elasticsearch søgning

Hvis du har brug for at kunne tælle antallat af dokumenter ud fra noglel kriterier, vil man jo i SQL benytte COUNT og GROUP BY, men dette er ikke helt så nemt i Elasticsearch.

[code] SELECT COUNT(*) FROM min_table WHERE status=’active" AND type=2 GROUP BY user_id;
[/code]

Men her er et eksempel på hvordan det kan lade sig gører.

[code] {
"size" : 0,
"query" : {
"bool" : {
"filter" : [
{ "term" : { "status" : "active" } },
{ "term" : { "type" : "2"} }
] }
},
"aggs" : {
"antal" : {
"terms" : { "field" : "user_id" }
}
}
}
[/code]

I dette eksempel finder vi alle dokumnter som har status = active og type = 2. Dem laver vi så en aggeration på user_id.
Samtidig har jeg sat size til 0, dette vil gøre at vi ikke får andet tilbage end aggerationens retultat.

Comments (0)

Skriv et svar

Back To Top