Выпущена новая версия Elasticsearch — современного распределенного движка полнотекстового поиска и выполнения аналитических запросов реального времени. Elasticsearch построен на основе библиотеки Apache Lucene и распространяется под лицензией Apache.На пути от версии 1.0 к 2.0 было принято 2799 pull request'ов от 477 разработчиков.Основные изменения в этой версии: В предыдущих версия выборка данных ограничивалась комбинацией запросов (query) и фильтров (filter); запросы отличались от фильтров возможностью вычисления функции ранжирования, а фильтры от запросов — более быстрым методом выполнения и возможностью кеширования. В новой версии [ запросы и фильтры были объеденены ](
https://www.elastic.co/blog/better-query-execution-coming-elasticsearch-2-0 ) , а режим исполнения выбирается контекстом в котором находится запрос. Это заметно упростило логику построения сложных запросов, так же позволило провести ряд оптимизаций. Так, например, медленные запросы поиска фраз и геопоиска теперь выполняются в две стадии — сначала выполняется быстрая апроксимация в режиме «фильтра», а после — медленный уточняющий запрос. Многие фильтры в Elasticsearch могут выполняться в двух режимах — с поддержкой кеширования и без. В режиме с поддержкой кеширования первое применение фильтра приводит к полному вычислению значения фильтра на всех документах индекса, в режиме без кеширования фильтр вычисляется для множества документов, ограниченных предыдущими условиями. Ранее выбор режима выполнения отдавался пользователю, в новой версии режим выбирается автоматически на основе на накопленной статистики выполнения запросов. Так же была повышена эффективность кеша — вместо простых bitset'ов теперь используется [ более быстрое и компактное представление ](
https://www.elastic.co/blog/frame-of-reference-and-roaring-bitmaps ) . [ Новая реализация parent/child отношений ](
https://github.com/elastic/elasticsearch/pull/6511 ) более эффективна в комбинациях с другими типами запросов. Так же в предыдущих версия колонка _parent, используемая для связи целиком кешировалась в оперативной памяти. В новой версии используется дисковое хранилище [ «doc values» ](
https://www.elastic.co/blog/disk-based-field-data-a-k-a-doc-values ) , что привело к существенному снижению использования оперативной памяти сервером. Добавлен новый тип агрегатных функций — " [ pipeline aggregations ](
https://www.elastic.co/blog/out-of-this-world-aggregations ) ", позволяющий производить вычисления поверх других агрегатов. Этот режим применяется для вычисления производных, поиска максимальных и средних значений среди результатов других агрегатов, [ сглаживания графиков ](
https://www.elastic.co/blog/staying-in-control-with-moving-averages-part-1 ) , [ прогнозирования временных рядов ](
https://www.elastic.co/blog/staying-in-control-with-moving-averages-part-2 ) и аналогичных функций. Улучшения надежности — операция индексации теперь заканчивается после выполнения fsync журнала транзакций; для всех файлов индекса вычисляются и проверяются контрольные суммы; все операции перемещения файлов индекса теперь гарантировано атомарны. Протокол управления кластером модифицирован для более быстрого распространения изменений в больших кластерах. [ Большой рефакторинг mapping'а ](
https://www.elastic.co/blog/great-mapping-refactoring ) — описания схемы данных и настроек индексации. Исправлено большое количество проблем, которые приводили к неоднозначным или неожиданным результатам. Выпущен специальный плагин для проверки совместимости схемы с новой версий и упрощения миграции. Для компрессии данных теперь может использоваться не только быстрый алгоритм LZ4, но и более медленный (но эффективный) DEFLATE. [ Смена алгоритма ](
https://www.elastic.co/blog/store-compression-in-lucene-and-elasticsearch ) может быть произведена на существующем индексе перед его оптимизацией, например для исторических данных в которых более не ожидается изменений. Новая версия Elasticsearch может работать с индексами, созданными предыдущими версиями (начиная с 0.90). Опубликован [ список изменений ](
https://www.elastic.co/guide/en/elasticsearch/reference/2.0/breaking-changes-2.0.html ) , которые нужно учесть при миграции с предыдущих версий.Вместе с выходом новой версии было объявлено, что проприетарный плагин для мониторинга кластера, [ Marvel ](
https://www.elastic.co/products/marvel ) , теперь можно бесплатно использовать для production инсталляций. Коммерческая лицензия требуется только для функций мониторинга группы кластеров Elasticsearch.
Ссылка:
http://www.linux.org.ru/news/opensource/12062605