Я использовал приведенные ниже условия агрегирования с использованием скрипта .
Обратите внимание, что, глядя на ваши данные, я пришел к строковой логике.Протестируйте его и измените логику в зависимости от того, что вы ищете.
Лучшим подходом будет попытка создать отдельное поле с именем hostname
со значениями того, что вы ищете, и применить к нему агрегирование.
Однако, если вы застряли, я полагаю, что ниже может помочь агрегация !!
Запрос агрегации:
POST <your_index_name>/_search
{
"size": 0,
"aggs": {
"my_unique_urls": {
"terms": {
"script" : {
"inline": """
String st = doc['pageUri.keyword'].value;
if(st==null){
return "";
} else {
return st.substring(0, st.lastIndexOf(".")+4);
}
""",
"lang": "painless"
}
}
}
}
}
Ниже показано, как выглядит мой ответ:
Ответ на запрос:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 0,
"hits": []
},
"aggregations": {
"my_unique_urls": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "http://www.espnfc.com",
"doc_count": 1
},
{
"key": "http://www.wikipedia.org",
"doc_count": 1
},
{
"key": "https://en.wikipedia.org",
"doc_count": 1
}
]
}
}
}
Надеюсь, это поможет!