LINUX.ORG.RU

Elasticsearch 2.0

 


0

4

Выпущена новая версия 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.

>>> Подробности

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 18)

Ответ на: комментарий от A1

но и ищет быстрее на порядок

Тесты у народа говорят об обратном.

но индексировать можно сразу на кластер

Так и запишем. На классических односерверных решениях сабж не нужен :)

Мой опыт основывается на реальном переводе сервиса со сфинкса на эластик. Ни разу не пожалели.

Ну, я планирую как-нибудь сабж пощупать на реальных задачах, но пока не перевешивает.

Плюс абсолютно бесплатно получили инкрементальную индексацию

Она и в Сфинксе сто лет есть :) При чём хочешь через дельты, хочешь через RT.

Да Крончик, если ты возишься со сфинксом это многое говорит об уровне твоих проектов)

Я и не скрывал никогда, что с кластерами не работал. И пиковая нагрузка моих проектов за всю историю — только 100+ тыс. юзеров в одновременном онлайне.

Вот когда имеющиеся решения не станут справляться с такой нагрузкой — тогда буду искать более оптимальные решения. А преждевременная оптимизация — зло.

KRoN73 ★★★★★
()
Ответ на: комментарий от shahid

сфинктера

Кстати, к вопросу о том, у кого подгорело :) Обычно хамить и высокомерничать начинают те, у кого какие-то проблемы :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Тесты у народа говорят об обратном.

Мы тоже тестировали. Задержка с полусекунды дропнулась до 20ms. Проблема сфинкса в неумении в сложную фильтрацию. Фултекст еще норм, но при фильтрации он, такое ощущение, делает фулскан. На датасете в 40M документов совсем все грустно становится.

Так и запишем. На классических односерверных решениях сабж не нужен :)

классических

Это очень смешно. Я уже говорил про уровень. Что не отменяет нужности сфинкса для соответствующих задач, впрочем как и встроенных в базах ft-движков.

Она и в Сфинксе сто лет есть :) При чём хочешь через дельты, хочешь через RT.

Проблема с раскаткой этих дельт по кластеру сфинксов. Да-да, один сервер у нас не справлялся с нагрузкой)

A1
()
Ответ на: комментарий от A1

Я вот только одного не понимаю, причем тут сдох проект или нет? Сдох = никому не нужен, но сдох != невозможно сделать. Собственно говоря - вот и все, других пойнтов никаких здесь нет.

shty ★★★★★
()
Ответ на: комментарий от KRoN73

Тесты у народа ...

«Более 7 миллионов человек установили Windows...» (c)

shty ★★★★★
()
Ответ на: комментарий от KRoN73

Подгорает просто ужасно, когда вспоминаю про обширный опыт создания, удаления и изменения схемы индексов на лету в сфинксе... Кстати, где они?.. До сих пор жалею о тех нескольких часах, потраченных на очередную и последнюю попытку знакомства со сфинксом.

По тестам он быстрее на сервере с третьим пентиумом? Так grep ещё быстрее может оказаться...

shahid ★★★★★
()
Ответ на: комментарий от shty

Сдох = никому не нужен, но сдох != невозможно сделать.

сдох != нормальное рабочее решение.

Пойнт в этом. Попытка не засчитана, как говорится. Они старались, но не смогли. Люцен уровня 2006ого года, мягко говоря, практически ничего не умел.

A1
()
Ответ на: комментарий от shahid

да вообще не про то разговор, кое-кто умный решил выпендриться и ляпнул, что дескать на вот на это вашем с++ такого вообще никогда не сделать, был тыкнут в clucene носом и теперь пытается съехать, не очень удачно впрочем

shty ★★★★★
()
Ответ на: комментарий от anonymous

Проект уровня эластика на плюсах или что-там у вас просто был бы невозможен.

Вот это эталон вброса, сразу видно, анон на мелочи не разменивается.

hobbit ★★★★★
()
Ответ на: комментарий от A1

сдох != нормальное рабочее решение

ты сейчас серьезно пытаешься доказать, что условный «lucene» на java написать можно, а на c++ никогда, я правильно понимаю суть проводимых экзорцисов, мущина?

shty ★★★★★
()
Ответ на: комментарий от shty

был тыкнут в clucene

Был ткнут в нечто повторяющее lucene образца 2006 года. fixed. Ты бы еще вспомнил lucene++, которое повторяет lucene образца 2010. Оба проекта сдохли, так как не могли тягаться со скоростью появления фич на жабе.

Естественно, при наличии неограниченных ресурсов можно запилить проект любой сложности на любом языке. На плюсах разработка тупо медленнее. И именно поэтому в каждый момент времени у плюсового проекта не будет паритета с жабским, и именно поэтому они невозможно. Как еще объяснить? Ты же далеко не тупой.

A1
()
Ответ на: комментарий от shty

что условный «lucene» на java написать можно, а на c++ никогда

Специально для тебя разжевал позицию ниже. Как можно было так превратно понять?

Не никогда, а экономически нецелесообразно. Что в нашей реальности выливается в один и тот же результат)

A1
()
Ответ на: комментарий от A1

Естественно, при наличии неограниченных ресурсов можно запилить проект любой сложности на любом языке. На плюсах разработка тупо медленнее.

ну в сущности тогда и спорить не о чем

shty ★★★★★
()
Ответ на: комментарий от A1

Как можно было так превратно понять?

анонимусы, к ним надо относиться осторожно :)) среди них цари водятся и всякое такое

ПС и кстати, обрати внимание, не у одного меня такое ощущение возникло

shty ★★★★★
()
Последнее исправление: shty (всего исправлений: 1)

(обращение к абстрактным стратегам Elastic)

Давайте ребята, обратитесь к мировому опыту построения подобных систем. Вы же не зря приняли на работу бывших руководителей splunk год назад.

Снизьте порог вхождения в систему. Кто придумал заставлять пользователя системы писать запросы в JSON? Почему коммерческие продукты предлагают проверенный десятилетиями вариант - создали аналог утилит GNU, только для обработки данных, и прогоняют между ними потоки записей (пар ключ-значение) через пайпы, превращая месиво машинных данных из пачки источников в красивый понятный график или таблицу?

Выкиньте этот движок поиска по художественному тексту. Замените его на движок поиск по машинным данным

Ej_Pulsar
()
Последнее исправление: Ej_Pulsar (всего исправлений: 1)
Ответ на: комментарий от Ej_Pulsar

Снизьте порог вхождения в систему.

Слинковать с libastral штоле?

Кто придумал заставлять пользователя системы писать запросы в JSON?

Надеюсь у вас пользователи хоть конфиги руками не накатывают на кластер перед работой.

Почему коммерческие продукты предлагают проверенный десятилетиями вариант - создали аналог утилит GNU,

История засверкала небесными красками матерого ынтерпрайза.

только для обработки данных,

А, так ты данные в Elastic собрался обрабатывать? Смелый джигит!

и прогоняют между ними потоки записей (пар ключ-значение) через пайпы, превращая месиво машинных данных из пачки источников в красивый понятный график или таблицу?

Вот мой тебе совет - никогда не путай ETL, репортинг, потоковую обработку данных и полнотекстовый поиск.

PS Хочешь себе аналитическую систему - бери Pentaho или JasperReports.

shty ★★★★★
()
Ответ на: комментарий от Ej_Pulsar

Выкиньте этот движок поиска по художественному тексту. Замените его на движок поиск по машинным данным.

"... столько людей в нашей стране ложатся спать голодными, а в то же время, в пище для кошек очень много тунца! Когда я вижу этих дельфинов в западных аквариумах, я все время думаю, - какая потеря! Давайте мы перережем всех дельфинов и скормим их нашим кошкам, а тунец останется для голодных Американцев!.. Так много людей мерзнет, дрожит от холода по ночам, поэтому я предлагаю: Ловите кошек, снимайте с них шкуры, чтобы согреть тысячи мерзнущих..." (с)

shty ★★★★★
()
Последнее исправление: shty (всего исправлений: 3)
Ответ на: комментарий от Ej_Pulsar

Снизьте порог вхождения в систему.

Он и так ниже плинтуса.

Кто придумал заставлять пользователя системы писать запросы в JSON?

Гений! Вместо того чтоб городить SQL-like синтаксис с расширениями и гейшами, они просто дали возможность собирать AST. А сладкие dsl прекрасно поддерживаются клиентскими библиотеками. Сколько багов и головной боли они убрали можешь посмотреть в сфинксовом багтрекере)

Выкиньте этот движок поиска по художественному тексту. Замените его на движок поиск по машинным данным

Считать аналитику на эластике одно удовольствие, ты же даже не пробовал.

A1
()
Ответ на: комментарий от shty

Вот мой тебе совет - никогда не путай ETL, репортинг, потоковую обработку данных и полнотекстовый поиск.
PS Хочешь себе аналитическую систему - бери Pentaho или JasperReports.

А ты забавный, красноглазый только немного. Приходи на собеседование? У меня вакансии под расширение открылись. Для знающих, что такое ETL, репортинг, полнотекстовой поиск и т.д.. Заодно парням расскажешь о своём несомненно конструктивном опыте настройке опенсорса.

Ej_Pulsar
()
Ответ на: комментарий от Ej_Pulsar

спасибо за предложение, но вынужден ответить отказом, в настоящий момент я связан долгосрочными обязательствами

shty ★★★★★
()
Последнее исправление: shty (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.