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 →