Manticore Search 3.0.0 теперь доступен

Мы рады объявить о выпуске 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 атрибутов можно было обновлять только скалярные ключевые значения.

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

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

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

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

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

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

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

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

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

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

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

Поисковые запросы с подстановочными знаками теперь на несколько процентов быстрее в версии 3. OR-запросы в некоторых случаях могут быть на несколько процентов медленнее (максимум 9% в проведенных тестах), эта проблема будет решена в будущих релизах. Индексы RT с большим количеством дисковых чанков теперь значительно быстрее.

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

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

img

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

img

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

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

Если вы используете списки исключений, в объявлениях индексов требуются изменения . Индексы RT не должны содержать данных в чанке ОЗУ (выполните FLUSH RAMCHUNK) во время конвертации.

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

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

Полная справка об изменениях и шагах для миграции доступна в руководстве по миграции .

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

Полный список изменений версии 3.0.0 можно найти в примечании к выпуску .

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

Concerning HTTP protocol, expect the following changes in next releases: /search endpoint will be deprecated and /sql response format will be the same as /json endpoint.

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

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