#elasticsearch #curl #elk
Вопрос:
Добрый день.
Я некоторое время боролся с этим, так как я новичок в ElasticSearch, и я был бы очень признателен за некоторые рекомендации или советы.
Моя цель-выполнить запрос, который извлекает список уникальных значений IP-адресов, который фильтруется по времени их последнего появления.
С чем я борюсь, так это с уникальной частью. Я немного поэкспериментировал с «aggs», которые работали для получения уникальных значений, но я не смог найти способ по-прежнему сортировать результаты по времени их последнего появления.
Я включил свой запрос ниже, моя цель-ограничить результаты, чтобы не возвращались дубликаты «src_ip» при сортировке по @отметке времени или, по крайней мере, при извлечении последних найденных значений.
Get _search
{
"query": {
"match": {
"type": "CitrixHoneypot|Ciscoasa"
}
},
"_source": ["@timestamp", "src_ip", "type"],
"sort": [
{
"@timestamp": {
"order": "desc",
"unmapped_type": "boolean"
}
}
],
"size": 500
}
Мы очень ценим любую помощь.
Ответ №1:
Ваш запрошенный запрос будет выглядеть примерно так, как показано ниже:
{
"query": {
"match": {
"type": "CitrixHoneypot|Ciscoasa"
}
},
"aggs": {
"unique_ip": {
"terms": {
"field": "src_ip",
"size": 500
},"aggs": {
"top_hits": {
"top_hits": {
"sort": [{"@timestamp":{ "order": "desc" }}],
"size": 1
}
}
}
}
},"size": 0
}
В этом запросе сначала вы находите уникальный src_ips
, затем выбираете самый последний документ, используя лучшие хиты, и выполняете сортировку @timestamp
.