⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.

Manticore Search 3.0.0 is now available

Мы рады объявить о выпуске Manticore Search 3.0.0, нашего долгожданного первого крупного релиза. Это первая версия Manticore, нарушающая совместимость индексов со старыми версиями.

Загрузки доступны здесь и на странице Manticore Github . Docker‑образ доступен в Docker Hub .

Ключевые изменения

Одной из крупных проблем Manticore Search 2 было ограничение в 4 ГБ строк/JSON‑атрибутов на индекс. Чтобы обойти это ограничение, данные приходилось шардинговать по нескольким индексам. Версия 3 переосмысливает хранение индексов, снимая это ограничение и позволяя уменьшить количество шардов (или просто использовать один индекс), а также полностью оптимизировать RealTime‑индекс до одного чанка в случаях, затронутых ограничением.

Совместимость индексов нарушена, поскольку новое хранилище индексов имеет другую структуру. Существующие индексы, созданные в Manticore 2, не могут быть загружены в Manticore 3, но их можно легко обновить с помощью инструмента конвертации .

Также нет ограничений на динамическое обновление атрибутов (с использованием UPDATE ). Ранее строковые атрибуты можно было обновлять только командой REPLACE, а для JSON‑атрибутов можно было обновлять только скалярные значения ключей.

Списки kill‑list для обычных индексов теперь применяются при загрузке/ротации индекса, а не при каждом запросе. Индекс, содержащий kill‑list, должен определить список индексов , для которых kill‑list будет применяться при загрузке/ротации. Это устраняет необходимость задавать определённый порядок поиска по индексам, как раньше. Если вы ротируете несколько индексов одновременно, Manticore Search выполнит умную ротацию: сначала будут ротированы индексы, не попадающие в kill‑list, а в конце — индексы, отмеченные в kill‑list.

Идентификаторы документов теперь являются положительными знаковыми 64‑битными целыми числами, ранее они были беззнаковыми 64‑битными целыми.

Другие улучшения

Добавлена функция CONCAT() — позволяет объединять две и более строк. Если нужно объединять нестроковые аргументы, можно дополнительно использовать TO_STRING().

Репликация получила несколько улучшений:

  • node_address директива — позволяет указать сетевой адрес узла

  • JOIN CLUSTER обеспечивает более простой синтаксис, позволяя указать только адрес и порт одного из узлов кластера с помощью конструкции 'AT'

  • ALTER CLUSTER обновление узлов кластера — для обновления списка узлов в кластере

  • список узлов выводится в SHOW STATUS

Заметки о производительности

Запросы AND обычно работают быстрее в v3. Ускорение зависит от частоты ключевых слов. Тесты, включающие топ‑1000 из коллекции, показали небольшие приросты в случае множества часто встречающихся ключевых слов (~10 %) и более 60 % когда некоторые ключевые слова находились в конце топ‑1000. Реже встречающиеся ключевые слова должны давать ещё больший прирост.

Поиск с подстановками несколько процентов быстрее в v3. Поиск OR в некоторых случаях может быть несколько процентов медленнее (не более 9 % в проведённых тестах); эта проблема будет решена в будущих релизах. RT‑индексы с большим количеством дисковых чанков теперь работают значительно быстрее.

Благодаря ранним тестировщикам v3 уже работает в продакшене тысячи часов. Ниже представлены несколько наблюдаемых улучшений:

v3 лучше в плане фрагментации ОЗУ:

img

Некоторые пользователи, уже тестирующие v3 в продакшене, сообщают о лучшей средней производительности по сравнению с 2.8:

img

Что нужно знать перед обновлением?

Вам потребуется переиндексировать все индексы или использовать инструмент конвертации .

Если вы используете kill‑list, в объявлении индексов требуются изменения . RT‑индексы не должны содержать данных в RAM‑чанке (выполните FLUSH RAMCHUNK) во время конвертации.

Для распределённых конфигураций миграция может начинаться с дата‑узлов (агентов) к мастер‑узлам, так как мастер‑узел, работающий на v2, может взаимодействовать с агентами, работающими на v3.

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

Полный перечень изменений и шагов миграции можно найти в руководстве по миграции .

Хотя Manticore 3 был тщательно протестирован в продакшене несколькими ранними пользователями, могут оставаться некоторые проблемы. Мы будем благодарны, если вы сообщите о любой проблеме в трекер GitHub .

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

Будущие заметки

Что касается HTTP‑протокола, ожидайте следующие изменения в будущих релизах: эндпоинт /search будет устаревшим, а формат ответа /sql будет таким же, как у эндпоинта /json.

Установить Manticore Search

Установить Manticore Search