Elasticsearch

Elasticsearch — сервер поиска, основанный на Lucene. Обеспечивает полнотекстовый, распределённый и мультиарендный поиск с RESTful-веб-интерфейсом и поддержкой документов JSON. Elasticsearch написан на Java и выпускается как открытое программное обеспечение/source available под различными лицензиями в разное время.

undefined
Общие сведения
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» — возвращают искомое значение. Вторые комбинируют простые запросы для получения более сложной информации.

Match all query

Самый базовый запрос — возвращает все проиндексированные объекты:

{
   "query":{
      "match_all":{}
   }
}

Match query

Используется для поиска документов с определённым значением поля. Например, чтобы найти объекты, где цвет зелёный:

{
   "query":{
      "match" : {
         "color":"зеленый"
      }
   }
}

Multi match query

Похоже на предыдущий запрос, но ищет совпадения по нескольким полям:

{
   "query":{
      "multi_match" : {
         "query": "монте видео",
         "fields": [ "город", "регион" ]
      }
   }
}

Term queries

Используются для точного поиска по значениям (например, числа или конкретные слова):

{
   "query":{
      "term":{"animal":"собака"}
   }
}

Range query

Поиск по диапазону значений («gte» — больше/равно, «gt» — строго больше, «lte» — меньше/равно, «lt» — строго меньше):

{
   "query":{
      "range":{
         "rating":{
            "gte":4
         }
      }
   }
}

Преимущества

  • Благодаря реализации на Java работает везде, где есть поддержка Java.
  • Высокая скорость отклика.
  • Распределённая архитектура, что обеспечивает масштабируемость и адаптивность.
  • Простая организация резервного копирования данных.
  • Использует JSON для ответов, что облегчает интеграцию с разными языками программирования.

Недостатки

  • Поддерживает только формат JSON как тип ответа, не поддерживаются такие форматы, как CSV или XML.
  • Возможны ситуации split-brain.

Краткое описание

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. 1 2 Banon, Shay The Future of Compass & ElasticSearch (англ.). Дата обращения: 6 сентября 2025. Архивировано 27 августа 2013 года.
  2. Banon, Shay You Know, for Search (англ.) (8 февраля 2010). Дата обращения: 6 сентября 2025. Архивировано 16 января 2013 года.
  3. Elasticsearch Scores $70M In Series C To Fund Growth Spurt (англ.). TechCrunch (5 июня 2014). Дата обращения: 6 сентября 2025. Архивировано 11 декабря 2024 года.
  4. Elastic Product End of Life Dates (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 4 октября 2025 года.
  5. 0.5.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  6. 0.6.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  7. 0.7.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  8. 0.7.1 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  9. 0.8.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  10. 0.9.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  11. 0.10.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  12. 0.11.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  13. 0.12.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  14. 0.13.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  15. 0.14.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  16. 0.15.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  17. 0.16.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 5 марта 2016 года.
  18. 0.17.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  19. 0.18.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  20. 0.18.7 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  21. 0.19.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  22. 0.19.12 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  23. 0.20.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  24. 0.20.6 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  25. 0.90.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  26. 1 2 Elasticsearch 1.1.0, 1.0.2 and 0.90.13 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  27. 1.0.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 10 мая 2015 года.
  28. Elasticsearch 1.1.1 and 1.0.3 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  29. 1 2 Elasticsearch 1.2.0 and 1.1.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  30. Elasticsearch 1.3.2 and 1.2.4 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 7 апреля 2015 года.
  31. Elasticsearch 1.3.0 And 1.2.3 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 7 апреля 2015 года.
  32. Elasticsearch 1.4.4 and 1.3.9 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 декабря 2015 года.
  33. Elasticsearch 1.4.0 And 1.3.5 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 7 апреля 2015 года.
  34. 1 2 Elasticsearch 1.5.2 and 1.4.5 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 12 июля 2025 года.
  35. Elasticsearch 1.5.0 Released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 14 июля 2025 года.
  36. Elasticsearch 1.6.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 10 июня 2025 года.
  37. Elasticsearch 1.7.1 and 1.6.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 13 мая 2025 года.
  38. Elasticsearch 1.7.0 and 1.6.1 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 11 августа 2025 года.
  39. 1 2 3 Elasticsearch 2.2.0 and 2.1.2 and 1.7.5 released (англ.). elastic.co (2 февраля 2016). Дата обращения: 6 сентября 2025. Архивировано 18 июля 2025 года.
  40. Elasticsearch 2.0.0 GA released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 3 августа 2025 года.
  41. Elasticsearch 2.1.1, 2.0.2, and 1.7.4 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 22 декабря 2015 года.
  42. Elasticsearch 2.1.0 and 2.0.1 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 16 июня 2025 года.
  43. 1 2 Elasticsearch 2.3.0 and 2.2.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 16 июня 2025 года.
  44. Elasticsearch 2.3.3 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 8 июля 2025 года.
  45. Elasticsearch 2.4.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 28 января 2025 года.
  46. Elasticsearch 2.4.5 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 7 февраля 2025 года.
  47. Elasticsearch 5.0.0-GA released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 21 января 2025 года.
  48. Elasticsearch 5.0.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 21 января 2025 года.
  49. Elasticsearch 5.1.1 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 18 июля 2025 года.
  50. Elasticsearch 5.1.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 19 июня 2025 года.
  51. Elasticsearch 5.2.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 13 августа 2025 года.
  52. Elasticsearch 5.2.2 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 28 января 2025 года.
  53. Elasticsearch 5.3.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 13 июля 2025 года.
  54. Elasticsearch 5.3.3 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 18 июня 2025 года.
  55. Elasticsearch 5.4.0 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 28 января 2025 года.
  56. Elasticsearch 5.4.3 released (англ.). elastic.co. Дата обращения: 6 сентября 2025. Архивировано 28 января 2025 года.
  57. Elastic 8.0 — A new era of speed, scale, relevance, and simplicity (англ.). Elastic (10 февраля 2022). Дата обращения: 6 сентября 2025. Архивировано 9 июля 2025 года.
  58. 1 2 Download Elasticsearch (англ.). Elastic. Дата обращения: 6 сентября 2025. Архивировано 5 октября 2025 года.
  59. Elasticsearch release notes (англ.). Elastic. Дата обращения: 6 сентября 2025. Архивировано 13 августа 2025 года.
  60. Elastic Product End of Life Dates (англ.). Elastic. Дата обращения: 6 сентября 2025. Архивировано 4 октября 2025 года.
  61. Elastic license update (англ.). Elastic (3 июня 2021). Дата обращения: 6 сентября 2025. Архивировано 4 июня 2021 года.
  62. Elasticsearch will be open source again as CTO declares “changed landscape” (англ.). DevClass (2 сентября 2024). Дата обращения: 6 сентября 2025. Архивировано 9 августа 2025 года.
  63. Elastic’s Journey from Apache 2.0 to AGPL 3 (англ.). Pureinsights (10 сентября 2024). Дата обращения: 6 сентября 2025. Архивировано 15 июня 2025 года.
  64. Introducing OpenSearch (англ.). AWS (12 апреля 2021). Дата обращения: 6 сентября 2025. Архивировано 10 октября 2025 года.
  65. OpenSearch FAQ (англ.). OpenSearch. Дата обращения: 6 сентября 2025. Архивировано 28 августа 2025 года.
  66. AWS brings OpenSearch under the Linux Foundation umbrella (англ.). TechCrunch (16 сентября 2024). Дата обращения: 6 сентября 2025. Архивировано 16 сентября 2024 года.
  67. What is the OpenSearch project? (англ.). Elastic. Дата обращения: 6 сентября 2025. Архивировано 30 июля 2025 года.
  68. 1 2 Official Website (англ.). Elasticsearch.org. Дата обращения: 6 сентября 2025. Архивировано 10 марта 2015 года.
  69. percolate at elasticsearch.org reference (англ.). Elasticsearch.org. Дата обращения: 6 сентября 2025. Архивировано 2 октября 2013 года.
  70. elasticsearch Guide: Gateway (англ.). elasticsearch. Дата обращения: 6 сентября 2025. Архивировано 1 октября 2013 года.
  71. ElasticSearch as database (англ.). Karussell.wordpress.com. Дата обращения: 6 сентября 2025. Архивировано 21 августа 2018 года.
  72. No transaction support (англ.). Elasticsearch-users.115913.n3.nabble.com (8 июля 2010). Дата обращения: 6 сентября 2025. Архивировано 6 октября 2018 года.
  73. Elasticsearch.org Case Studies (англ.). Elasticsearch.org. Дата обращения: 6 сентября 2025. Архивировано 1 сентября 2013 года.
  74. Horohoe, Chad Wikimedia moving to Elasticsearch (англ.) (6 января 2014). Дата обращения: 6 сентября 2025. Архивировано 9 января 2014 года.
  75. StumbleUpon | Developer Blog (англ.). StumbleUpon.com. Дата обращения: 6 сентября 2025. Архивировано 21 января 2012 года.
  76. Копия архива (англ.). Дата обращения: 6 сентября 2025. Архивировано 4 марта 2015 года.
  77. ElasticSearch helps Mozilla Metrics team (англ.). Pedroalves-bi.blogspot.com. Дата обращения: 6 сентября 2025. Архивировано 22 июня 2025 года.
  78. Full Text Search on Quora (англ.). Quora.com. Дата обращения: 6 сентября 2025.
  79. 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 года.
  80. Oculus: The metric correlation component of Etsy's Kale system (англ.). Github.com. Дата обращения: 6 сентября 2025. Архивировано 11 сентября 2025 года.
  81. Djekic, Petar Architecture behind our new Search and Explore experience (англ.). Backstage.soundcloud.com. Дата обращения: 6 сентября 2025. Архивировано 3 декабря 2013 года.
  82. A Whole New Code Search 路 GitHub (англ.). Github.com (23 января 2013). Дата обращения: 6 сентября 2025. Архивировано 27 августа 2013 года.
  83. openFDA - About the API (англ.). FDA.gov. Дата обращения: 6 сентября 2025. Архивировано 7 июня 2014 года.
  84. Needle in a haystack - Using Elasticsearch to run the Large Hadron Collider of CERN (англ.). medium.com. Дата обращения: 6 сентября 2025. Архивировано 14 июля 2014 года.
  85. Craver, Nick What it takes to run Stack Overflow (англ.). NickCraver.com (22 ноября 2013). Дата обращения: 6 сентября 2025. Архивировано 8 октября 2025 года.
  86. Using Elasticsearch in Grafana (англ.). Grafana Org.. Дата обращения: 6 сентября 2025. Архивировано 9 февраля 2017 года.