Elasticsearch 5.0

2016-10-28

Спустя 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.

Полный список изменений

Breaking changes

Подробности