Компания-разработчик Elasticsearch и Kibana анонсировала выпуск будущих версий продуктов под open source лицензией AGPL. Ранее ядро продуктов было лицензировано под лицензией Apache, но в 2021 году компания перешла на коммерческую лицензию, для того чтобы помешать Amazon предоставлять их продукты как сервис на своей платформе AWS без отчислений разработчику. Amazon, в свою очередь, объявил о выпуске собственного форка – OpenSearch под лицензией Apache.
Выход новых релизов под AGPL планируется в течении нескольких ближайших недель.
На прошлой неделе компания Elastic Search B.V. объявила, что она изменяет свою стратегию лицензирования своих продуктов и не будут выпускать новые версии Elasticsearch и Kibana под лицензией Apache 2.0. Вместо этого новые версии будут предлагаться в соответствии с собственной Elastic License (которая ограничивает возможности его использования) или Server Side Public License (которая содержит требования, которые делают ее неприемлемой для многих в сообществе открытого исходного кода). Это означает, что Elasticsearch и Kibana больше не будут программным обеспечением с открытым исходным кодом.
Чтобы гарантировать, что версии обоих пакетов с открытым исходным кодом останутся доступными и будут поддерживаться, Amazon заявил о том, что предпримет шаги для создания и поддержки форка с открытым исходным кодом Elasticsearch и Kibana с лицензией Apache 2.0. В течение нескольких недель будет создано ответвление от последней кодовой базы Elasticsearch 7.10, остающейся под старой лицензией Apache 2.0, после чего форк продолжит развиваться самостоятельно и будет использован в будущих выпусках
собственного дистрибутива от Amazon Open Distro for Elasticsearch, а также начнёт использоваться в сервисе Amazon Elasticsearch Service.
Также об аналогичной инициативе объявила компания Logz.io.
Elasticsearch — поисковая система. Написана на Java, в основе использует библиотеку Lucene, официальные клиенты доступны на Java, .NET (C#), Python, Groovy и ряде других языков.
Разрабатывается компанией Elastic вместе со связанными проектами — механизмом сбора данных и анализа журналов Logstash и платформой аналитики и визуализации Kibana; эти три продукта предназначены для использования в качестве интегрированного решения, называемого «Elastic Stack».
Спустя 364 дня с момента выпуска версии 2.0 состоялся релиз Elasticsearch 5.0 — многофункционального распределённого движка полнотекстового поиска с поддержкой географии и аналитики. Проект написан на Java, построен на базе библиотеки Apache Lucene и распространяется под лицензией Apache 2.0.
Выпущена новая версия Elasticsearch — современного распределенного движка полнотекстового поиска и выполнения аналитических запросов реального времени. Elasticsearch построен на основе библиотеки Apache Lucene и распространяется под лицензией Apache.
На пути от версии 1.0 к 2.0 было принято 2799 pull request'ов от 477 разработчиков.
Основные изменения в этой версии:
В предыдущих версиях выборка данных ограничивалась комбинацией запросов (query) и фильтров (filter); запросы отличались от фильтров возможностью вычисления функции ранжирования, а фильтры от запросов — более быстрым методом выполнения и возможностью кеширования. В новой версии запросы и фильтры были объединены, а режим исполнения выбирается контекстом в котором находится запрос. Это заметно упростило логику построения сложных запросов, так же позволило провести ряд оптимизаций. Так, например, медленные запросы поиска фраз и геопоиска теперь выполняются в две стадии — сначала выполняется быстрая апроксимация в режиме «фильтра», а после — медленный уточняющий запрос.
Многие фильтры в Elasticsearch могут выполняться в двух режимах — с поддержкой кеширования и без. В режиме с поддержкой кеширования первое применение фильтра приводит к полному вычислению значения фильтра на всех документах индекса, в режиме без кеширования фильтр вычисляется для множества документов, ограниченных предыдущими условиями. Ранее выбор режима выполнения отдавался пользователю, в новой версии режим выбирается автоматически на основе накопленной статистики выполнения запросов. Так же была повышена эффективность кеша — вместо простых bitset'ов теперь используется более быстрое и компактное представление.
Новая реализация parent/child-отношений более эффективна в комбинациях с другими типами запросов. Также в предыдущих версия колонка _parent, используемая для связи, целиком кешировалась в оперативной памяти. В новой версии используется дисковое хранилище «doc values», что привело к существенному снижению использования оперативной памяти сервером.
Добавлен новый тип агрегатных функций — "pipeline aggregations", позволяющий производить вычисления поверх других агрегатов. Этот режим применяется для вычисления производных, поиска максимальных и средних значений среди результатов других агрегатов, сглаживания графиков, прогнозирования временных рядов и аналогичных функций.
Улучшения надёжности — операция индексации теперь заканчивается после выполнения fsync журнала транзакций; для всех файлов индекса вычисляются и проверяются контрольные суммы; все операции перемещения файлов индекса теперь гарантировано атомарны. Протокол управления кластером модифицирован для более быстрого распространения изменений в больших кластерах.
Большой рефакторинг mapping'а — описания схемы данных и настроек индексации. Исправлено большое количество проблем, которые приводили к неоднозначным или неожиданным результатам. Выпущен специальный плагин для проверки совместимости схемы с новой версий и упрощения миграции.
Для компрессии данных теперь может использоваться не только быстрый алгоритм LZ4, но и более медленный (но эффективный) DEFLATE. Смена алгоритма может быть произведена на существующем индексе перед его оптимизацией, например для исторических данных, в которых больше не ожидается изменений.
Новая версия Elasticsearch может работать с индексами, созданными предыдущими версиями (начиная с 0.90). Опубликован список изменений, которые нужно учесть при миграции с предыдущих версий.
Вместе с выходом новой версии было объявлено, что проприетарный плагин для мониторинга кластера, Marvel, теперь можно бесплатно использовать для production-установок. Коммерческая лицензия требуется только для функций мониторинга группы кластеров Elasticsearch.
Выпущена новая версия Elasticsearch — современного распределенного движка полнотекстового поиска и выполнения аналитических запросов реального времени.
Основные изменения этой версии:
Добавлена экспериментальная функция доступа к данным дочерних документов при выполнении запросов по parent/child отношениям и при работе с nested-объектами. Поддерживается извлечение произвольного количества дочерних документов с поддержкой постраничной выдачи, сортировки по релевантности и подсветки найденных фрагментов текста.
Shadow-реплики — возможность запуска нескольких узлов кластера Elasticsearch над одной (сторонней) распределенной файловой системой. Фактическая репликация и надежность хранения данных в этом случае обеспечивается файловой системой, а Elasticsearch обеспечивает отказоустойчивое распределение функций master/slave по узлам кластера.
Улучшены алгоритмы управления кластером, благодаря чему функции распределения шардов, создания, восстановления и удаления индексов стали работать более надежно и предсказуемо.
Были доработаны функции проверки контрольных сумм данных, добавленные в прошлой версии Elasticsearch 1.4.
Выпущена новая версия Elasticsearch — современного распределенного движка полнотекстового поиска и выполнения аналитических запросов реального времени.
Одной из основных целей при выпуске этой версии — повышение стабильности и надежности сервиса:
Значительно улучшен алгоритм управления кластером и выбора master-узла, ранее имевший ряд известных проблем
Добавлена проверка контрольных сумм хранимых данных для определения «битых» сегментов индекса и журналов операций
Механизм прерывания исполнения запроса при превышении лимита на потребление оперативной памяти
Также в этой версии:
Оптимизирован механизм doc values — поколоночного хранилища данных для быстрого извлечения значений по первичному ключу. Механизм заменяет field cache — структуру в памяти, выполняющую аналогичную функцию. Использование doc values позволяет уменьшить потребление памяти процессом Elasticsearch и лучше использовать функции кеширования диска операционной системой. До оптимизации хранилище заметно уступало по производительности field cache.
Query cache — кеш результатов аналитических запросов, сохраняющий результаты выборок при отсутствии изменений. Кеш рекомендуется использовать в задачах анализа журналов в сочетании с партиционированием индексов по дате события. В этом случае финальный результат запроса будет получен комбинацией кешированных результатов из исторических партиций и выполненного запроса по свежей секции в которую идет запись.
Flake ID — новый алгоритм генерации идентификаторов документов, который снижает количество случайного ввода-вывода (оптимизация добавления в индекс документов без заданного пользователем идентификатора).
Эффективная поддержка HTTP Pipelining в пользовательском API
Выпущена версия 1.0 Elasticsearch — сервера полнотекстового поиска и выполнения аналитических запросов в реальном времени. Elasticsearch представляет возможности распределения нагрузки по группе узлов с функциями отказоустойчивости; простой REST API с клиентами для большого количества языков; поддержку произвольного количества индексов и операций над группами индексов; работу в режиме без четко определенной схемы хранения данных. Elasticsearch построен на базе библиотеки Apache Lucene и распространяется под лицензией Apache 2.
Версия 1.0 находилась в разработке около 9 месяцев и включила более 8000 коммитов, созданных при участии более 180-ти контрибьюторов.
В этой версии (по сравнению с прошлой стабильной версией 0.90) были добавлены следующие функции:
Snapshot/Restore — набор API для создания backup'ов и восстановления индексов. Помимо локальной файловой системы, для хранения backup'ов может использоваться HDFS или Amazon S3.
Aggregations — новое семейство аналитических запросов. Функции построены на базе «фасетов» и дополнительно включают возможности вложенных агрегатов и комбинации агрегатных функций.
Distributed Percolation — новая реализация «percolator», «обратной» версии поиска. В этом режиме в индексе сохраняются поисковые запросы, а через API поступают новые документы, которые фильтруются через эти сохраненные запросы. Новая реализация позволяет распределять поисковую работу над одним документом по многим узлам, поддерживает функции подсветки совпадений, аналитические запросы и пакетный режим работы.
cat API — набор функций API, оптимизированных для использования в текстовой консоли. Предназначены для администрирования и поиска/исправления проблем на кластере.
Federated search — специальный узел, способный одновременно быть членом нескольких не связанных между собой кластеров. Позволяет распределять по разным кластерам большую часть операций поиска и индексирования.
Изменения, которые необходимо учесть при обновлении с версии 0.90, описаны в документации.