Спустя 364 дня с момента выпуска версии 2.0 состоялся релиз Elasticsearch 5.0 — многофункционального распределённого движка полнотекстового поиска с поддержкой географии и аналитики. Проект написан на Java, построен на базе библиотеки Apache Lucene и распространяется под лицензией Apache 2.0.
Наиболее заметные изменения:
- Обновление на Lucene 6. Теперь для индексации чисел, дат, ip-адресов и гео-точек используется Lucene dimensional points вместо обычных инвертированных индексов, что позволяет уменьшить размеры индексов, существенно увеличить скорость исполнения range-запросов и расширить возможности индексации. Это вызвало сопутствующие изменения в маппингах, а также в скоринге найденных результатов.
- Скорость индексации в целом возросла на 25-80%.
- Тип поля
string
теперь разделён на типыtext
иkeyword
для полнотекстовой и обычной индексации соответственно. Раньше для этого использовался параметрindex
, принимавший значенияanalyzed
иnot_analyzed
. Однако для типаstring
также сохраняется обратная совместимость в рамках ветки 5.x. - Поля
_timestamp
и_ttl
ушли в прошлое. Для удаления устаревших документов предлагается использовать Delete by Query API. - Поддержка индексации адресов IPv6.
- Новые типы данных:
half_float
иscaled_float
. - Optimize API переименовано в Force Merge API с аналогичным синтаксисом и назначением.
- Для написания скриптов теперь по умолчанию используется Painless, совместимость с Groovy сохранена. Новый язык для написания скриптов был разработан с целью упрощения выполнения типичных задач на фоне решения постоянных проблем с изоляцией и безопасностью у языков-предшественников.
- Ingest API для трансформации входных данных. Можно определять pipeline'ы из процессоров, например для парсинга каких-то сырых данных в документы перед индексацией. Также, допускается выделение отдельных узлов кластера под эти задачи:
node.ingest: false
в конфигах узлов, которым запрещается заниматься ingest'ом. - При опечатках в работе с API elasticsearch выдаёт подсказки в стиле «Did you mean ...?», а так же более строго рассматривает вводимые пользователем настройки и параметры.
- Оптимизации в Search и Aggregations API, в том числе устраняющие тормоза kibana при повторных агрегациях на диапазоне дат.
- Completion Suggester учитывает документы, которые были удалены; умеет ранжирование прямо во время поиска. Раньше допускалось задавать ранжирование (вес каждого результата) только во время индексации.
- Удалены site-плагины.
- Добавлен Java REST client, работающий по HTTP. Java transport client вынесен в отдельную зависимость. Сравнение производительности двух java-клиентов.
Скачок в нумерации версий связан с решением о синхронизации версий elasticsearch, kibana, logstash, beats и других продуктов Elastic.