Ich habe eine ElasticSearch-Abfrage, die Abfragen über einen Index und dann aggregiert basierend auf einem bestimmten Feld sender_not_analyzed
. Ich benutze dann eine Begriff Aggregation auf das gleiche Feld sender_not_analyzed
, die Eimer für die oberen "Absender" zurückgibt. Meine Frage ist jetzt:ElasticSearch Query durch eindeutige Teilzeichenfolgen (E-Mail-Domäne)
{
"size": 0,
"query": {
"regexp": {
"sender_not_analyzed": ".*[@].*"
}
},
"aggs": {
"sender-stats": {
"terms": {
"field": "sender_not_analyzed"
}
}
}
}
die Eimer zurück, die wie folgt aussehen:
"aggregations": {
"sender-stats": {
"buckets": [
{
"key": "<Mike <[email protected]>@MISSING_DOMAIN>",
"doc_count": 5017
},
{
"key": "[email protected]",
"doc_count": 3963
},
{
"key": "[email protected]",
"doc_count": 2857
},
{
"key": "[email protected]",
"doc_count":1544
}
Wie kann ich eine Aggregation schreiben, so dass ich einzelne Eimer für jede einzelne E-Mail-Domain erhalten, zB foo.com
hätte eine doc_count
von (3963 + 2857) 6820? Kann ich dies mit einer Regex-Aggregation erreichen oder muss ich einen benutzerdefinierten Analysator schreiben, um die Zeichenfolge am @ bis zum Ende der Zeichenfolge zu trennen?