Да, вы можете использовать Elasticsearch для хранения и анализа данных временных рядов.
Если быть более точным - это зависит от вашего варианта использования. Для примера в моем варианте использования (данные истории изменения цен финансовых инструментов, в разработке) я могу вставить 40 000 документов / сек (~ 125-байтовые документы с 11 полями в каждом - 1 метка времени, строки и десятичные дроби, что означает 5 МБ / с полезных данных) на 14 часов в день на единственном узле (большом современном сервере с оперативной памятью 192 ГБ), поддерживаемом корпоративной SAN (которая поддерживается вращающимися дисками, а не SSD!). Я решил хранить до 1 ТБ данных, но предполагаю, что 2–4 ТБ также могут работать на одном узле.
Все это с настройками файла конфигурации по умолчанию, за исключением ES_HEAP_SIZE 30 ГБ. Я подозреваю, что можно было бы значительно улучшить производительность записи на этом оборудовании с некоторой настройкой (например, мне кажется странным, что iostat сообщает об использовании устройства на 25-30%, как если бы Elastic ограничивал его / сохранял полосу пропускания ввода-вывода для чтения или слияния ... но также может быть, что% util является нереалистичной метрикой для устройств SAN ..)
Производительность запросов также прекрасна - запросы / графики Кибаны возвращаются быстро, если вы ограничиваете набор данных результатов временем и / или другими полями.
В этом случае вы должны не использовать Logstash для загрузки данных, а массовую вставку больших пакетов непосредственно в Elasticsearch. https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
Вам также необходимо определить сопоставление https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html, чтобы убедиться, что эластичный анализирует ваши данные так, как вы хотите (числа, даты и т. д.), создает требуемый уровень. индексации и др.
Другие рекомендуемые методы для этого варианта использования - использовать отдельный индекс для каждого дня (или месяца / недели в зависимости от скорости вставки) и убедиться, что индекс создается с помощью только достаточно осколков для хранения данных в течение 1 дня (по умолчанию новые индексы создаются с 5 осколками, и производительность осколков начинает ухудшаться после того, как осколок превышает определенный размер - обычно несколько десятков ГБ, но может отличаться для вашего варианта использования - вам нужно измерить / поэкспериментировать).
Использование псевдонимов Elasticsearch https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html помогает работать с несколькими индексами и обычно рекомендуется.
person
Borut Hadžialić
schedule
10.05.2016