2017-06-23 1 views
0

J'ai quatre documents dans mon index. Ce sont les suivants.Recherche élastique: Agrégation de documents en fonction de modèles

client (:: ffff: 10.0.0.6: 27787) Connected

client (:: ffff: 10.0.0.6: 27805) Connected

client (:: ffff: 10.0.0.6: 27823) connecté

client (:: ffff: 10.0.0.6: 27875) connecté

=================

J'espère regrouper ces derniers comme suit .

client (:: ffff: 10.0.0.6: _____) Connected

Il existe de nombreux documents avec différents modèles dans un index, non seulement le modèle de document ci-dessus, et j'espère obtenir tous les modèles en regroupant tous les documents dans un index.

Comment puis-je le faire avec ES? Si ES ne prend pas directement en charge de telles agrégations, avez-vous une idée pour le faire?

Cordialement, Kangmo

Répondre

0

vous devez diviser les données index dans des domaines spécifiques pour, afin d'ensemble fiable sur vos données. Par conséquent, vous devez disposer d'un processus qui divise la chaîne Client(::ffff:10.0.0.6:27787) Connected en ::ffff:10.0.0.6 et place ce contenu dans son propre champ.

Une façon possible d'y parvenir est d'utiliser le nœud d'acquisition. Le nœud ingest a ce que l'on appelle un grok processor pour extraire des données structurées du texte. Avec cela, vous pouvez extraire l'adresse IP et l'indexer dans son propre champ (vous pouvez également utiliser le type de données ip, vous pouvez donc faire des requêtes de plage de style CIDR si nécessaire) - et vous pouvez ensuite agréger facilement sur ce Les données.

Espérons que cela aide!

--Alex