Elasticsearch - obtenir l'agrégation des termes pour les champs spécifiés
Pooja
J'utilise des agrégations de termes pour obtenir tout le nombre d'utilisateurs de chaque ville
{
"aggs" : {
"cities" : {
"terms" : { "field" : "city.name" }
}
}
}
Cela donne des résultats. Mais je veux toujours obtenir certaines villes spécifiques dans les résultats de l'agrégation, qu'elles soient dans le top 10 ou non. Dois-je utiliser l'agrégation de filtres pour chacune des villes séparément pour obtenir son résultat?
Val
Vous avez trois solutions:
A. Vous pouvez spécifier un filtre dans la requête:
{
"query": {
"terms": {
"city.name": [ "city1", "city2", "city3" ]
}
},
"aggs": {
"cities": {
"terms": {
"field": "city.name"
}
}
}
}
B. Vous pouvez spécifier un filtre dans les agrégations:
{
"aggs": {
"city_filter": {
"filter": {
"terms": {
"city.name": [
"city1",
"city2",
"city3"
]
}
},
"aggs": {
"cities": {
"terms": {
"field": "city.name"
}
}
}
}
}
}
C. Vous pouvez filtrer les valeurs dans les termes agrégation:
{
"aggs": {
"cities": {
"terms": {
"field": "city.name",
"include": "city1*",
"exclude": "city2*"
}
}
}
}