Jedyną rzeczą, która blisko Znalazłem to: Multiple group-by in ElasticsearchElasticSearch grupa przez wielu dziedzinach
Zasadniczo próbuję dostać równowartość ES z poniższym zapytaniu MySQL:
select gender, age_range, count(distinct profile_id) as count FROM TABLE group by age_range, gender
wiek i Płeć same były łatwo dostać:
{
"query": {
"match_all": {}
},
"facets": {
"ages": {
"terms": {
"field": "age_range",
"size": 20
}
},
"gender_by_age": {
"terms": {
"fields": [
"age_range",
"gender"
]
}
}
},
"size": 0
}
co daje:
{
"ages": {
"_type": "terms",
"missing": 0,
"total": 193961,
"other": 0,
"terms": [
{
"term": 0,
"count": 162643
},
{
"term": 3,
"count": 10683
},
{
"term": 4,
"count": 8931
},
{
"term": 5,
"count": 4690
},
{
"term": 6,
"count": 3647
},
{
"term": 2,
"count": 3247
},
{
"term": 1,
"count": 120
}
]
},
"total_gender": {
"_type": "terms",
"missing": 0,
"total": 193961,
"other": 0,
"terms": [
{
"term": 1,
"count": 94799
},
{
"term": 2,
"count": 62645
},
{
"term": 0,
"count": 36517
}
]
}
}
Ale teraz muszę coś, co wygląda tak:
[breakdown_gender] => Array
(
[1] => Array
(
[0] => 264
[1] => 1
[2] => 6
[3] => 67
[4] => 72
[5] => 40
[6] => 23
)
[2] => Array
(
[0] => 153
[2] => 2
[3] => 21
[4] => 35
[5] => 22
[6] => 11
)
)
Należy pamiętać, że 0,1,2,3,4,5,6
są „mapowania” na wiek waha się więc rzeczywiście coś znaczy :) i nie tylko liczby. na przykład Płeć [1] (która jest "męska") rozkłada się na przedział wiekowy [0] (który jest "poniżej 18") z liczbą 246.
Perfect! Dziękuję Ci! – Pavel
W środę, 28 października 2015 r. Oficjalna strona elasticsearch stwierdza: "Aspekty są przestarzałe i zostaną usunięte w przyszłej wersji.Jesteś zachęcany do migracji do agregacji zamiast ". – Ankur
Czy mogę mieć date_histogram jako jedną agregację? – Clindo