#elasticsearch #kibana #elasticsearch-aggregation
#elasticsearch #kibana #elasticsearch-агрегация
Вопрос:
Мне нужно получить список различных идентификаторов для определенного дня. Я пытаюсь использовать «Агрегации» с «фильтрацией». Пробовал несколько способов, но это не работает. Какой правильный формат?
{
"size": "1000",
"_source": ["Id"],
"query": {
"range": {
"@timestamp": {
"gte": "2020-10-20T00:00:00",
"lt": "2020-10-21T00:00:00"
}
}
},
"aggs": {
"ids": {
"terms": { "field": "Id.keyword" }
}
}
}
Другой способ, который я пробовал:
{
"size": "1000",
"_source": ["Id"],
"aggs": {
"ids": {
"filter": {
"range": {
"@timestamp": {
"gte": "2020-10-20T00:00:00",
"lt": "2020-10-21T00:00:00"
}
}
},
"terms": { "field": "Id.keyword" }
}
}
}
Вот сопоставление @timestamp:
"@timestamp": {
"type": "date",
"format": "dateOptionalTime"
}
Комментарии:
1. Не могли бы вы добавить свое сопоставление? Спасибо!
2. Можете ли вы уточнить, что «не работает»? Есть какая-нибудь ошибка, которой нужно поделиться?
3. Фильтрация не работает. Он возвращает строки со значением ‘timestamp’: 18 октября 2020, 07:59:32.842
Ответ №1:
На самом деле, первый вариант почти правильный. Вам просто нужно установить размер в 0 в запросе, удалить _source
, поскольку он вам не понадобится, и установить размер в 1000 в агрегации терминов:
{
"size": "0",
"query": {
"range": {
"@timestamp": {
"gte": "2020-10-20T00:00:00",
"lt": "2020-10-21T00:00:00"
}
}
},
"aggs": {
"ids": {
"terms": {
"field": "Id.keyword",
"size": 1000
}
}
}
}
Комментарии:
1. Фильтрация не работает. Он возвращает строки со значением ‘timestamp’: 18 октября 2020, 07:59:32.842
2. Каково отображение вашего индекса? В ответе у вас не должно быть никаких обращений, только агрегации. Как вы отправляете запрос?
3. Да, в ответе есть только идентификаторы, но когда я захожу в Kibana и фильтрую по одному из идентификаторов, чтобы убедиться, что он работает, все строки для этого идентификатора относятся к 18 октября.
4. Не уверен, что вы подразумеваете под «Каково отображение вашего индекса?» Как бы я это нашел? Извините, относительно новичок в ELK stack.
5. Что вы получаете при запуске
GET your-index-name/_mapping
в Kibana Dev Tools?