Elasticsearch
Elasticsearch — сервер поиска, основанный на Lucene. Обеспечивает полнотекстовый, распределённый и мультиарендный поиск с RESTful-веб-интерфейсом и поддержкой документов JSON. Elasticsearch написан на Java и выпускается как открытое программное обеспечение/source available под различными лицензиями в разное время.
Общие сведения
| Elasticsearch | |
|---|---|
| Тип | поисковый движок и индексирование |
| Разработчик | Шай Банон |
| Написана на | Java |
| Операционная система | мультиплатформенное |
| Первый выпуск | февраль 2010 |
| Аппаратная платформа | Java Virtual Machine |
| Последняя версия | 8.2.3 (14 июня 2022) |
| Репозиторий | github.com/elastic/elast… |
| Состояние | активное |
| Лицензия | Apache License 2.0 (исторически) · Elastic License 2.0 / SSPL (с 2021) · AGPLv3 (дополнительная опция с 2024) |
| Сайт | elastic.co/products/elas… |
История
Шай Банон создал Compass в 2004 году[1]. При подготовке третьей версии Compass он пришёл к выводу, что потребуется переписать значительную часть кода для создания «масштабируемого поискового решения». В результате он разработал «решение, изначально предназначенное для распределённой работы» с интерфейсом JSON поверх HTTP, что удобно для языков программирования, отличных от Java[1]. Первая версия Elasticsearch была выпущена в феврале 2010 года[2].
В июне 2014 года компания объявила о привлечении 70 млн долларов США на раунде финансирования серии C, спустя всего 18 месяцев после основания. Раунд возглавил New Enterprise Associates (NEA), также участвовали Benchmark Capital и Index Ventures. Общая сумма финансирования составила 104 млн долларов[3].
| Версия | Дата первого релиза | Последняя версия | Дата релиза | Поддержка[4] |
|---|---|---|---|---|
| 0.4 | 8 февраля 2010 | 0.4.0 | 8 февраля 2010 | Не поддерживается |
| 0.5 | 5 марта 2010[5] | 0.5.1 | 9 марта 2010 | Не поддерживается |
| 0.6 | 9 апреля 2010[6] | 0.6.0 | 9 апреля 2010 | Не поддерживается |
| 0.7 | 14 мая 2010[7] | 0.7.1 | 17 мая 2010[8] | Не поддерживается |
| 0.8 | 27 мая 2010[9] | 0.8.0 | 27 мая 2010 | Не поддерживается |
| 0.9 | 26 июля 2010[10] | 0.9.0 | 26 июля 2010 | Не поддерживается |
| 0.10 | 27 августа 2010[11] | 0.10.0 | 27 августа 2010 | Не поддерживается |
| 0.11 | 29 сентября 2010[12] | 0.11.0 | 29 сентября 2010 | Не поддерживается |
| 0.12 | 18 октября 2010[13] | 0.12.1 | 27 октября 2010 | Не поддерживается |
| 0.13 | 18 ноября 2010[14] | 0.13.1 | 3 декабря 2010 | Не поддерживается |
| 0.14 | 27 декабря 2010[15] | 0.14.4 | 31 января 2011 | Не поддерживается |
| 0.15 | 18 февраля 2011[16] | 0.15.2 | 7 марта 2011 | Не поддерживается |
| 0.16 | 23 апреля 2011[17] | 0.16.5 | 26 июля 2011 | Не поддерживается |
| 0.17 | 19 июля 2011[18] | 0.17.10 | 16 ноября 2011 | Не поддерживается |
| 0.18 | 26 октября 2011[19] | 0.18.7 | 10 января 2012[20] | Не поддерживается |
| 0.19 | 1 марта 2012[21] | 0.19.12 | 4 декабря 2012[22] | Не поддерживается |
| 0.20 | 7 декабря 2012[23] | 0.20.6 | 25 марта 2013[24] | Не поддерживается |
| 0.90 | 29 апреля 2013[25] | 0.90.13 | 25 марта 2014[26] | Не поддерживается |
| 1.0 | 12 февраля 2014[27] | 1.0.3 | 16 апреля 2014[28] | Не поддерживается |
| 1.1 | 25 марта 2014[26] | 1.1.2 | 22 мая 2014[29] | Не поддерживается |
| 1.2 | 22 мая 2014[29] | 1.2.4 | 13 августа 2014[30] | Не поддерживается |
| 1.3 | 23 июля 2014[31] | 1.3.9 | 19 февраля 2015[32] | Не поддерживается |
| 1.4 | 5 ноября 2014[33] | 1.4.5 | 27 апреля 2015[34] | Не поддерживается |
| 1.5 | 23 марта 2015[35] | 1.5.2 | 27 апреля 2015[34] | Не поддерживается |
| 1.6 | 9 июня 2015[36] | 1.6.2 | 29 июля 2015[37] | Не поддерживается |
| 1.7 | 16 июля 2015[38] | 1.7.5 | 2 февраля 2016[39] | Не поддерживается |
| 2.0 | 28 октября 2015[40] | 2.0.2 | 17 декабря 2015[41] | Не поддерживается |
| 2.1 | 24 ноября 2015[42] | 2.1.2 | 2 февраля 2016[39] | Не поддерживается |
| 2.2 | 2 февраля 2016[39] | 2.2.2 | 30 марта 2016[43] | Поддерживается |
| 2.3 | 30 марта 2016[43] | 2.3.3 | 18 мая 2016[44] | Поддерживается |
| 2.4 | 31 апреля 2016[45] | 2.4.5 | 27 апреля 2017[46] | Поддерживается |
| 5.0 | 26 сентября 2016[47] | 5.0.2 | 29 ноября 2016[48] | Поддерживается |
| 5.1 | 8 декабря 2016[49] | 5.1.2 | 12 января 2017[50] | Поддерживается |
| 5.2 | 31 января 2017[51] | 5.2.2 | 28 февраля 2017[52] | Поддерживается |
| 5.3 | 28 марта 2017[53] | 5.3.3 | 1 июня 2017[54] | Поддерживается |
| 5.4 | 4 мая 2017[55] | 5.4.3 | 27 июня 2017[56] | Поддерживается |
- 8.0 (10 февраля 2022): нативный векторный поиск, улучшения безопасности и производительности[57].
- 9.1.3 (28 августа 2025, релиз-ноты от 23–28 августа): исправления и обновления безопасности; текущая стабильная версия доступна для загрузки[58][59]. См. также таблицу жизненного цикла версий (EOL)[60].
Лицензирование
В разные периоды существенные части кода распространялись под лицензией Apache 2.0. В январе 2021 года компания объявила о переходе к двойному режиму source-available-лицензирования: Elastic License (ELv2) и SSPL, начиная с версии 7.11[61]. В 2024 году Elastic объявила о добавлении AGPLv3 как дополнительной опции лицензирования для Elasticsearch и Kibana[62][63]. Дистрибутив по умолчанию распространяется под лицензией Elastic License 2.0[58].
Bifurcación OpenSearch
В апреле 2021 года Amazon Web Services объявила о OpenSearch — форке последних версий Elasticsearch (7.10.2) и Kibana, выпущенных под Apache 2.0, с собственным управляемым сервисом и сообществом[64][65]. В 2024 году AWS объявила о передаче проекта под юрисдикцию Linux Foundation[66]. Elastic отмечает, что OpenSearch развивается на основе устаревших версий и не включает актуальные релизы Elasticsearch/Kibana[67].
Запросы (Queries)
Elasticsearch использует Query DSL (язык предметно-ориентированных запросов) для поиска по индексированным документам. Это гибкий и мощный, но простой язык, позволяющий эффективно исследовать данные. Благодаря использованию JSON-интерфейса, запросы легко читаемы и отлаживаются.
Запросы основываются на двух видах операторов: Leaf Query Clauses и Compound Query Clauses. Первые реализуют операции вроде «match», «term» или «range» — возвращают искомое значение. Вторые комбинируют простые запросы для получения более сложной информации.
Самый базовый запрос — возвращает все проиндексированные объекты:
{
"query":{
"match_all":{}
}
}
Используется для поиска документов с определённым значением поля. Например, чтобы найти объекты, где цвет зелёный:
{
"query":{
"match" : {
"color":"зеленый"
}
}
}
Похоже на предыдущий запрос, но ищет совпадения по нескольким полям:
{
"query":{
"multi_match" : {
"query": "монте видео",
"fields": [ "город", "регион" ]
}
}
}
Используются для точного поиска по значениям (например, числа или конкретные слова):
{
"query":{
"term":{"animal":"собака"}
}
}
Поиск по диапазону значений («gte» — больше/равно, «gt» — строго больше, «lte» — меньше/равно, «lt» — строго меньше):
{
"query":{
"range":{
"rating":{
"gte":4
}
}
}
}
Преимущества
- Благодаря реализации на Java работает везде, где есть поддержка Java.
- Высокая скорость отклика.
- Распределённая архитектура, что обеспечивает масштабируемость и адаптивность.
- Простая организация резервного копирования данных.
- Использует JSON для ответов, что облегчает интеграцию с разными языками программирования.
Недостатки
Краткое описание
Elasticsearch позволяет осуществлять поиск по любым типам документов. Поисковые операции масштабируемы и выполняются практически в реальном времени, возможна поддержка мультиарендности[68]. «Это распределённое решение: индексы разбиваются на сегменты (“шарды”), для каждого могут быть созданы реплики, а любой узел может хранить один или несколько сегментов и координировать запросы. Перераспределение и маршрутизация фрагментов происходят автоматически…»[68].
Основан на Lucene и стремится сделать все функции последнего доступными через JSON и Java API. Реализует фасетный поиск и перколяцию[69], что позволяет уведомлять о совпадении новых документов с зарегистрированными запросами.
Другая функция — «gateway»: отвечает за долговременное хранение индекса и восстановление после сбоев[70]. Поддержка запросов GET в реальном времени позволяет использовать ElasticSearch в решениях NoSQL[71], однако отсутствует поддержка распределённых транзакций[72].
Известные пользователи
Среди известных пользователей Elasticsearch[73] — Wikimedia[74], StumbleUpon[75], Mozilla[76],[77] Quora[78], Foursquare[79], Etsy[80], SoundCloud[81], GitHub[82], FDA[83], CERN[84], BuscaMil и Stack Exchange[85]. Также Elasticsearch используется в европейском проекте по централизации переводов для госструктур, NEC-TM (сайт).
Интеграция с другими программными продуктами
Elasticsearch входит в решения по управлению событиями и информацией безопасности — прежде всего в составе ELK-платформы (Elasticsearch, LogStash, Kibana). Также поддерживается интеграция с внешними инструментами для визуализации, включая Grafana и Kibana[86].
Примечания
- ↑ 1 2 Banon, Shay The Future of Compass & ElasticSearch (англ.). Дата обращения: 6 сентября 2025. Архивировано 27 августа 2013 года.
- ↑ Banon, Shay You Know, for Search (англ.) (8 февраля 2010). Дата обращения: 6 сентября 2025. Архивировано 16 января 2013 года.
- ↑ Elasticsearch Scores $70M In Series C To Fund Growth Spurt (англ.). TechCrunch (5 июня 2014). Дата обращения: 6 сентября 2025. Архивировано 11 декабря 2024 года.
- ↑ Elastic Product End of Life Dates (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 4 октября 2025 года.
- ↑ 0.5.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.6.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.7.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.7.1 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.8.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.9.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.10.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.11.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.12.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.13.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.14.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.15.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.16.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 5 марта 2016 года.
- ↑ 0.17.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.18.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.18.7 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.19.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.19.12 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.20.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.20.6 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 0.90.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 1 2 Elasticsearch 1.1.0, 1.0.2 and 0.90.13 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 1.0.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 10 мая 2015 года.
- ↑ Elasticsearch 1.1.1 and 1.0.3 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ 1 2 Elasticsearch 1.2.0 and 1.1.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ Elasticsearch 1.3.2 and 1.2.4 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 7 апреля 2015 года.
- ↑ Elasticsearch 1.3.0 And 1.2.3 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 7 апреля 2015 года.
- ↑ Elasticsearch 1.4.4 and 1.3.9 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
- ↑ Elasticsearch 1.4.0 And 1.3.5 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 7 апреля 2015 года.
- ↑ 1 2 Elasticsearch 1.5.2 and 1.4.5 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 12 июля 2025 года.
- ↑ Elasticsearch 1.5.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 14 июля 2025 года.
- ↑ Elasticsearch 1.6.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 10 июня 2025 года.
- ↑ Elasticsearch 1.7.1 and 1.6.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 13 мая 2025 года.
- ↑ Elasticsearch 1.7.0 and 1.6.1 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 11 августа 2025 года.
- ↑ 1 2 3 Elasticsearch 2.2.0 and 2.1.2 and 1.7.5 released (англ.). elastic.co (2 февраля 2016). Дата обращения: 6 сентября 2025. Архивировано 18 июля 2025 года.
- ↑ Elasticsearch 2.0.0 GA released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 3 августа 2025 года.
- ↑ Elasticsearch 2.1.1, 2.0.2, and 1.7.4 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 22 декабря 2015 года.
- ↑ Elasticsearch 2.1.0 and 2.0.1 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 16 июня 2025 года.
- ↑ 1 2 Elasticsearch 2.3.0 and 2.2.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 16 июня 2025 года.
- ↑ Elasticsearch 2.3.3 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 июля 2025 года.
- ↑ Elasticsearch 2.4.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 28 января 2025 года.
- ↑ Elasticsearch 2.4.5 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 7 февраля 2025 года.
- ↑ Elasticsearch 5.0.0-GA released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 21 января 2025 года.
- ↑ Elasticsearch 5.0.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 21 января 2025 года.
- ↑ Elasticsearch 5.1.1 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 18 июля 2025 года.
- ↑ Elasticsearch 5.1.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 19 июня 2025 года.
- ↑ Elasticsearch 5.2.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 13 августа 2025 года.
- ↑ Elasticsearch 5.2.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 28 января 2025 года.
- ↑ Elasticsearch 5.3.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 13 июля 2025 года.
- ↑ Elasticsearch 5.3.3 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 18 июня 2025 года.
- ↑ Elasticsearch 5.4.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 28 января 2025 года.
- ↑ Elasticsearch 5.4.3 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 28 января 2025 года.
- ↑ Elastic 8.0 — A new era of speed, scale, relevance, and simplicity (англ.). Elastic (10 февраля 2022). Дата обращения: 6 сентября 2025. Архивировано 9 июля 2025 года.
- ↑ 1 2 Download Elasticsearch (англ.). Elastic. Дата обращения: 6 сентября 2025. Архивировано 5 октября 2025 года.
- ↑ Elasticsearch release notes (англ.). Elastic. Дата обращения: 6 сентября 2025. Архивировано 13 августа 2025 года.
- ↑ Elastic Product End of Life Dates (англ.). Elastic. Дата обращения: 6 сентября 2025. Архивировано 4 октября 2025 года.
- ↑ Elastic license update (англ.). Elastic (3 июня 2021). Дата обращения: 6 сентября 2025. Архивировано 4 июня 2021 года.
- ↑ Elasticsearch will be open source again as CTO declares “changed landscape” (англ.). DevClass (2 сентября 2024). Дата обращения: 6 сентября 2025. Архивировано 9 августа 2025 года.
- ↑ Elastic’s Journey from Apache 2.0 to AGPL 3 (англ.). Pureinsights (10 сентября 2024). Дата обращения: 6 сентября 2025. Архивировано 15 июня 2025 года.
- ↑ Introducing OpenSearch (англ.). AWS (12 апреля 2021). Дата обращения: 6 сентября 2025. Архивировано 10 октября 2025 года.
- ↑ OpenSearch FAQ (англ.). OpenSearch. Дата обращения: 6 сентября 2025. Архивировано 28 августа 2025 года.
- ↑ AWS brings OpenSearch under the Linux Foundation umbrella (англ.). TechCrunch (16 сентября 2024). Дата обращения: 6 сентября 2025. Архивировано 16 сентября 2024 года.
- ↑ What is the OpenSearch project? (англ.). Elastic. Дата обращения: 6 сентября 2025. Архивировано 30 июля 2025 года.
- ↑ 1 2 Official Website (англ.). Elasticsearch.org. Дата обращения: 6 сентября 2025. Архивировано 10 марта 2015 года.
- ↑ percolate at elasticsearch.org reference (англ.). Elasticsearch.org. Дата обращения: 6 сентября 2025. Архивировано 2 октября 2013 года.
- ↑ elasticsearch Guide: Gateway (англ.). elasticsearch. Дата обращения: 6 сентября 2025. Архивировано 1 октября 2013 года.
- ↑ ElasticSearch as database (англ.). Karussell.wordpress.com. Дата обращения: 6 сентября 2025. Архивировано 21 августа 2018 года.
- ↑ No transaction support (англ.). Elasticsearch-users.115913.n3.nabble.com (8 июля 2010). Дата обращения: 6 сентября 2025. Архивировано 6 октября 2018 года.
- ↑ Elasticsearch.org Case Studies (англ.). Elasticsearch.org. Дата обращения: 6 сентября 2025. Архивировано 1 сентября 2013 года.
- ↑ Horohoe, Chad Wikimedia moving to Elasticsearch (англ.) (6 января 2014). Дата обращения: 6 сентября 2025. Архивировано 9 января 2014 года.
- ↑ StumbleUpon | Developer Blog (англ.). StumbleUpon.com. Дата обращения: 6 сентября 2025. Архивировано 21 января 2012 года.
- ↑ Копия архива (англ.). Дата обращения: 6 сентября 2025. Архивировано 4 марта 2015 года.
- ↑ ElasticSearch helps Mozilla Metrics team (англ.). Pedroalves-bi.blogspot.com. Дата обращения: 6 сентября 2025. Архивировано 22 июня 2025 года.
- ↑ Full Text Search on Quora (англ.). Quora.com. Дата обращения: 6 сентября 2025.
- ↑ foursquare now uses Elastic Search (and on a related note: Slashem also works with Elastic Search)! | Foursquare Engineering Blog (англ.). Engineering.foursquare.com. Дата обращения: 6 сентября 2025. Архивировано 11 августа 2012 года.
- ↑ Oculus: The metric correlation component of Etsy's Kale system (англ.). Github.com. Дата обращения: 6 сентября 2025. Архивировано 11 сентября 2025 года.
- ↑ Djekic, Petar Architecture behind our new Search and Explore experience (англ.). Backstage.soundcloud.com. Дата обращения: 6 сентября 2025. Архивировано 3 декабря 2013 года.
- ↑ A Whole New Code Search 路 GitHub (англ.). Github.com (23 января 2013). Дата обращения: 6 сентября 2025. Архивировано 27 августа 2013 года.
- ↑ openFDA - About the API (англ.). FDA.gov. Дата обращения: 6 сентября 2025. Архивировано 7 июня 2014 года.
- ↑ Needle in a haystack - Using Elasticsearch to run the Large Hadron Collider of CERN (англ.). medium.com. Дата обращения: 6 сентября 2025. Архивировано 14 июля 2014 года.
- ↑ Craver, Nick What it takes to run Stack Overflow (англ.). NickCraver.com (22 ноября 2013). Дата обращения: 6 сентября 2025. Архивировано 8 октября 2025 года.
- ↑ Using Elasticsearch in Grafana (англ.). Grafana Org.. Дата обращения: 6 сентября 2025. Архивировано 9 февраля 2017 года.