Открыть сервис

OpenSearch

OpenSearch — это набор открытых технологий (спецификаций и программного обеспечения) для публикации и поиска информации в интернете, а также название одноимённого поискового движка с открытым исходным кодом, разрабатываемого сообществом на основе кодовой базы Elasticsearch.

Технология OpenSearch включает в себя две основные составляющие: протокол OpenSearch (спецификация для децентрализованного поиска) и поисковый движок OpenSearch (программное обеспечение для полнотекстового поиска и анализа данных).

История

Протокол OpenSearch (2005—2008)

Изначально спецификация OpenSearch была предложена компанией Amazon в 2005 году. Протокол создавался как простой и открытый стандарт для того, чтобы веб-сайты могли предоставлять свои результаты поиска другим сервисам (например, браузерам или поисковым агрегаторам) в формате RSS или Atom. В 2005 году Amazon выпустила первую версию спецификации, которая описывала формат описания поискового сервиса (OpenSearch Description Document) и синтаксис запросов.

Несмотря на то, что протокол был принят рядом крупных сайтов (например, YouTube, Wikipedia, Flickr) и поддерживался браузерами (Internet Explorer, Firefox, Safari), его массовое распространение было ограничено. Развитие протокола замедлилось после 2008 года, когда последняя версия спецификации (1.1 Draft 5) была заморожена.

Поисковый движок OpenSearch (2021 — настоящее время)

В 2021 году компания Elastic N.V. изменила лицензию на свою популярную поисковую систему Elasticsearch с открытой лицензии Apache 2.0 на проприетарную лицензию SSPL (Server Side Public License). Это решение, направленное на ограничение использования технологии облачными провайдерами, вызвало критику в сообществе разработчиков.

В ответ на это компания Amazon Web Services (AWS) анонсировала форк (ответвление) последней версии Elasticsearch и Kibana (интерфейса визуализации), выпущенных под лицензией Apache 2.0. Проект получил название OpenSearch. Первый стабильный релиз OpenSearch (версия 1.0) состоялся в июле 2021 года. Целью проекта было сохранение открытой и бесплатной версии поискового движка, развиваемой сообществом под лицензией Apache 2.0.

В 2024 году проект OpenSearch был передан под управление независимой некоммерческой организации OpenSearch Software Foundation, созданной под эгидой Linux Foundation.

Протокол OpenSearch

Протокол OpenSearch предназначен для автоматического обнаружения и использования поисковых возможностей веб-сайтов. Он состоит из трёх основных компонентов:

OpenSearch Description Document (OSDD)

Это XML-файл, который описывает поисковый сервис. В документе указываются:

  • Название и описание поисковой системы.
  • URL-адрес для отправки поисковых запросов с шаблоном для подстановки ключевых слов.
  • Тип возвращаемых данных (например, RSS, Atom, HTML).
  • Кодировка символов.
  • Иконка (фавикон) для отображения в браузере.

Пример простого OSDD: ``xml <?xml version="1.0" encoding="UTF-8"?> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">; <ShortName>Пример поиска</ShortName> <Description>Поиск по сайту example.com</Description> <Url type="text/html" template="http://example.com/search?q={searchTerms}"/>; </OpenSearchDescription> ``

Синтаксис запросов

Протокол определяет шаблонные переменные (например, {searchTerms}, {count}, {startPage}), которые подставляются в URL при выполнении поискового запроса. Это позволяет браузерам и другим приложениям отправлять запросы к любому серверу, поддерживающему OpenSearch.

Форматы ответов

Результаты поиска могут возвращаться в форматах RSS 2.0 или Atom, что обеспечивает их машинную читаемость и возможность агрегации.

Применение протокола

Протокол OpenSearch в основном используется для интеграции поисковых возможностей сайта в браузеры. Пользователь может добавить поисковый движок сайта в панель поиска браузера, после чего поиск будет выполняться непосредственно на этом сайте. Также протокол применяется в системах корпоративного поиска и агрегаторах новостей.

Поисковый движок OpenSearch

OpenSearch (поисковый движок) — это программное обеспечение с открытым исходным кодом для полнотекстового поиска, аналитики и визуализации данных. Он является форком Elasticsearch и Kibana.

Архитектура и устройство

OpenSearch построен на базе библиотеки Apache Lucene, которая обеспечивает индексацию и поиск по тексту. Архитектура системы — распределённая, клиент-серверная.

  • Узлы (Nodes): Отдельные экземпляры OpenSearch, работающие на серверах. Узлы могут быть разных типов: мастер-узлы (управляют кластером), узлы данных (хранят индексы и выполняют поиск), координационные узлы (маршрутизируют запросы).
  • Кластер (Cluster): Группа узлов, работающих вместе. Кластер обеспечивает отказоустойчивость и масштабирование.
  • Индексы (Indices): Структуры данных, в которых хранятся документы. Индекс можно сравнить с таблицей в реляционной базе данных.
  • Документы (Documents): Основные единицы данных, хранящиеся в индексах в формате JSON.
  • Шарды (Shards): Фрагменты индекса, распределённые по разным узлам. Шардирование позволяет обрабатывать большие объёмы данных.

Основные функции

  • Полнотекстовый поиск: Быстрый поиск по тексту с поддержкой морфологии, стемминга, нечёткого поиска и поиска по фразам.
  • Аналитика: Агрегация данных (подсчёт сумм, средних значений, группировка), построение гистограмм, временных рядов.
  • Визуализация: Встроенный инструмент OpenSearch Dashboards (форк Kibana) позволяет создавать дашборды, диаграммы и карты для анализа данных.
  • Обработка логов: OpenSearch часто используется для централизованного сбора и анализа логов (стек ELK, но с заменой Elasticsearch на OpenSearch).
  • Векторный поиск: Поддержка поиска по векторным представлениям (embeddings) для задач машинного обучения и рекомендательных систем.

Отличия от Elasticsearch

Основные различия между OpenSearch и Elasticsearch (начиная с версии 7.10):

  • Лицензия: OpenSearch распространяется под лицензией Apache 2.0, в то время как новые версии Elasticsearch — под проприетарной лицензией SSPL (с ограничениями для облачных провайдеров).
  • Управление: OpenSearch управляется сообществом и фондом OpenSearch Software Foundation, Elasticsearch — компанией Elastic N.V.
  • Функции: Начиная с версии 2.x, OpenSearch и Elasticsearch начали расходиться в функциональности. Elasticsearch добавил проприетарные функции (например, машинное обучение в реальном времени), а OpenSearch — свои (например, улучшенная безопасность, поддержка k-NN поиска).
  • Совместимость: OpenSearch стремится сохранять обратную совместимость с API Elasticsearch 7.10, но полная совместимость с более новыми версиями не гарантируется.

Применение

OpenSearch используется в различных областях:

  • Мониторинг IT-инфраструктуры: Сбор и анализ логов, метрик производительности.
  • Поиск по сайтам и приложениям: Реализация внутреннего поиска на веб-сайтах, в интернет-магазинах, корпоративных порталах.
  • Анализ бизнес-данных: Построение отчётов и дашбордов по продажам, пользовательской активности и другим метрикам.
  • Безопасность: SIEM-системы (управление информацией о безопасности и событиями) для анализа угроз и инцидентов.

Интересные факты

  • Название OpenSearch для поискового движка было выбрано AWS в 2021 году, хотя протокол с таким же названием существовал с 2005 года. Это привело к путанице в терминологии, однако оба проекта не связаны между собой технически.
  • OpenSearch Dashboards (форк Kibana) поддерживает плагины, что позволяет расширять его функциональность.
  • Проект OpenSearch активно поддерживается не только AWS, но и другими компаниями, такими как SAP, Capital One и Aiven.

Критика и ограничения

  • Путаница с протоколом: Существование двух разных технологий с одним названием (протокол и движок) создаёт неудобства при поиске информации и документации.
  • Зависимость от AWS: Несмотря на передачу проекта в фонд, значительная часть разработки и финансирования OpenSearch осуществляется Amazon, что вызывает опасения по поводу доминирования одной компании.
  • Расхождение с Elasticsearch: Пользователям, мигрировавшим с Elasticsearch на OpenSearch, может потребоваться адаптация кода, так как API и функциональность постепенно расходятся.

Источники

  • Спецификация OpenSearch 1.1 Draft 5 (OpenSearch.org, 2008)
  • Документация проекта OpenSearch (opensearch.org, 2021—2024)
  • Пресс-релиз AWS о создании OpenSearch (Amazon Web Services, 2021)
  • Материалы OpenSearch Software Foundation (Linux Foundation, 2024)
  • Статья «Elasticsearch vs OpenSearch: The Complete Guide» (Logz.io, 2023)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →