Временные метки являются важнейшим компонентом Elasticsearch и служат краеугольным камнем для многих операций, таких как анализ данных с учетом времени, управление событиями журнала и версионирование документов. В этой статье рассматриваются дополнительные аспекты работы с временными метками в Elasticsearch, включая индексирование, запрос и форматирование.
Индексирование временных меток
Чтобы проиндексировать документ с пользовательской временной меткой, достаточно включить в документ поле даты. Elasticsearch автоматически распознает и маппирует форматы даты и времени ISO 8601. Например:
1 2 3 4 5 | PUT /my_index/_doc/1 { "@timestamp": "2023-01-01T00:00:00Z", "message": "New year, new beginnings!" } |
Запрос временных меток
Elasticsearch предоставляет ряд типов запросов для работы с полями дат. Запрос `range` особенно полезен для поиска по временным меткам. Например, чтобы найти все документы, проиндексированные в июне 2023 года, можно использовать:
1 2 3 4 5 6 7 8 9 10 11 | GET /my_index/_search { "query": { "range": { "@timestamp": { "gte": "2023-06-01T00:00:00Z", "lt": "2023-07-01T00:00:00Z" } } } } |
Математика дат и округление
Elasticsearch поддерживает выражения математики дат, которые можно использовать для вычисления относительных дат. Например, чтобы найти все документы, проиндексированные за последние 7 дней, можно использовать:
1 2 3 4 5 6 7 8 9 10 11 12 | json GET /my_index/_search { "query": { "range": { "@timestamp": { "gte": "now-7d/d", "lt": "now/d" } } } } |
В данном запросе `now-7d/d` означает "7 дней назад с округлением до начала дня", а `now/d` - "сейчас с округлением до начала дня".
Форматирование временных меток
Elasticsearch позволяет настраивать формат полей даты с помощью параметра маппинга `date`. Например, чтобы проиндексировать документ с временной меткой в формате времени Unix, можно задать такой маппинг:
1 2 3 4 5 6 7 8 9 10 11 12 | json PUT /my_index { "mappings": { "properties": { "@timestamp": { "type": "date", "format": "epoch_second" } } } } |
Затем можно проиндексировать документ с временной меткой Unix следующим образом:
1 2 3 4 5 6 | json PUT /my_index/_doc/1 { "@timestamp": 1640995200, "message": "Happy New Year!" } |
Заключение
В заключение следует отметить, что освоение временных меток в Elasticsearch предполагает понимание того, как индексировать, запрашивать и форматировать поля даты. Используя эти возможности, можно выполнять мощные операции анализа данных и управления событиями, основанные на времени.