Elasticsearch groupe de documents de filtre par champ
J'ai quelques documents:
{"name": "John", "district": 1},
{"name": "Mary", "district": 2},
{"name": "Nick", "district": 1},
{"name": "Bob", "district": 3},
{"name": "Kenny", "district": 1}
Comment puis-je filtrer/select distinct des documents par district?
{"name": "John", "district": 1},
{"name": "Mary", "district": 2},
{"name": "Bob", "district": 3}
En SQL, je peux utiliser GROUP BY. J'ai essayé termes d'agrégation, mais il ne retourna count distinct.
"aggs": {
"distinct": {
"terms": {
"field": "district",
"size": 0
}
}
}
Merci pour votre aide! 🙂
source d'informationauteur Geany
Vous devez vous connecter pour publier un commentaire.
Si votre ElasticSearch version 1.3 ou ci-dessus, vous pouvez utiliser un subaggregation de type top_hits qui vous donnera (par défaut) le top trois des documents correspondants triés sur votre requête score (ici, 1 que vous utilisez un match_all requête).
Vous pouvez définir la
size
paramètre à plus de 3.La suite de jeu de données et de requêtes :
Va de la sortie des documents de la manière que vous voulez :
Élastique recherche ne permet pas de fournir des documents distincts sur la valeur ou le groupe par une valeur unique .
Mais il y a des travaux autour pour cela, vous pouvez le faire si vous utilisez un client java ou pouvez le convertir dans votre langage adapté