Журнал изменений

Версия 15.1.0

Выпущено: 7 декабря 2025

Рекомендуемые библиотеки

  • Рекомендуемая версия MCL: 9.0.0
  • Рекомендуемая версия Buddy: 3.40.2

Если вы следуете официальному руководству по установке, вам не нужно об этом беспокоиться.

Критические изменения

  • ⚠️ v15.0.0 PR #4003 Обновлено требование к MCL до версии 9.0.0, добавлено хранение не сжатых float-векторов, изменение размера блока для KNN-векторов и неблокирующее чтение. Это обновление не меняет формат данных, но увеличивает версию API Manticore Search / MCL. Это обновление меняет формат данных. Старые версии MCL не смогут его прочитать, но новая версия по-прежнему может без проблем читать ваши существующие колоночные таблицы.

Новые функции и улучшения

  • 🆕 v15.1.0 PR #3990 Улучшены записи логов при сбросе чанков на диск, разбив общее время на более понятные части.
  • 🆕 v14.7.0 Issue #3860 Обновлено требование к Buddy до версии 3.40.1, включающее улучшение автодополнения: нормализация символов-разделителей биграмм в пробелы и фильтрация дублирующихся или некорректных комбинаций предложений для повышения качества подсказок. Также исправлена ошибка с некорректным JSON в Kafka-видах и исправлено автодополнение, чтобы сортировка комбинаций больше не вызывала ошибок при отсутствии некоторых ключей в карте оценок.
  • 🆕 v14.6.0 Issue #615 Обновлено требование к Manticore Buddy до версии 3.39.1, включающее исправление ошибок с некорректным JSON в плагине KNN и позволяющее обработчикам Buddy переопределять HTTP Content-Type, так что /metrics теперь возвращает формат Prometheus в текстовом виде (text/plain; version=0.0.4) вместо JSON, исправляя сбои при сборе метрик.
  • 🆕 v14.4.0 PR #3942 Обновлено требование к Manticore Buddy до версии 3.38.0, фильтрация предложений с нулевым количеством документов, улучшена обработка строковых ключей с Ds\Map, изменён формат отчёта использования памяти в Buddy с КБ на байты для большей точности, а также улучшена производительность, стабильность и поддерживаемость.
  • 🆕 v14.5.0 Issue #3329 Обрезка лишних пробелов и новых строк в JSON-пayload при логировании запросов — пропуск ведущих и завершающих пробелов для избежания логирования некорректного JSON.
  • 🆕 v14.3.0 PR #3932 Улучшена обработка LOCK TABLES / UNLOCK TABLES: блокировки на запись теперь возвращают предупреждения вместо ошибок, блокировки на чтение корректно отображаются в SHOW LOCKS, а общая логика блокировок стала последовательной.
  • 🆕 v14.2.0 Issue #3891 Добавлена поддержка произвольных выражений фильтра в JOIN ON (не только равенств), что позволяет выполнять запросы типа ... ON t1.id = t2.t1_id AND t2.value = 5.

Исправления ошибок

  • 🪲 v15.0.6 Issue #3601 Исправлена регрессия, из-за которой нативная служба Windows не запускалась при установке с пользовательским путём конфигурации.
  • 🪲 v15.0.5 Issue #3864 Исправлена обработка "присоединённых полей" в источниках на основе SQL, чтобы "маркер конца" корректно устанавливался при итерации по присоединённым результатам.
  • 🪲 v15.0.4 Issue #4004 Исправлена регрессия, из-за которой HTTP-ответы /sql от демона некорректно использовали заголовок Content-Type: text/html вместо application/json.
  • 🪲 v15.0.3 Issue #2727 Исправлена проблема, из-за которой группировка через GROUP BY / FACET по атрибутам, созданным с помощью маппинга JSON в атрибуты, не работала.
  • 🪲 v15.0.2 Issue #3962 Обновлено требование к Buddy до версии 3.40.2, которая добавляет поддержку нечеткого поиска в эндпоинт /sql и включает другие исправления для нечеткого поиска.
  • 🪲 v15.0.1 PR #3922 Обновлена документация и тесты, связанные с поддержкой Logstash 9.2.
  • 🪲 v14.7.6 PR #4002 Исправлено поведение KNN при переизбыточной выборке: теперь не вычисляется пересчитанное расстояние KNN, если пересчёт не запрошен, и подсказки доступа к float-векторам передаются в колоночный слой хранения.
  • 🪲 v14.7.5 PR #3999 Исправлена модель “test_298” для устранения сбоя теста, связанного с KNN.
  • 🪲 v14.7.4 Issue #3977 Тесты на Windows иногда создавали дампы сбоев .mdmp — исправлено, теперь "ubertests" не оставляют minidumps после завершения.
  • 🪲 v14.7.3 Issue #3832 Исправлена ошибка, при которой мульти-запросы через /cli_json, содержащие точки с запятой (например, объединяющие SQL-запросы), не выполнялись — точки с запятой больше не заменяются на нулевые символы перед обработкой.
  • 🪲 v14.7.2 Issue #1613 Задокументирована внутренняя 32-битная маска, используемая при подсчёте факторов ранжирования для операторов Phrase/Proximity/NEAR, и объяснено, как она может недосчитывать термины после 31-го ключевого слова.
  • 🪲 v14.7.1 PR #3992 Исправлены отсутствующие сообщения об ошибках для HTTP-запросов UPDATE и DELETE на распределённых таблицах, обрабатываемых через агенты, теперь клиенты корректно получают ошибки при сбоях операций.
  • 🪲 v14.6.4 Issue #3478 Улучшена проверка обновлений: теперь проверяется, что обновляемые атрибуты не конфликтуют с полнотекстовыми полями; обновления отклоняются, если они затрагивают полнотекстовые поля.
  • 🪲 v14.6.3 Issue #2352 Исправлена внутренняя ошибка при использовании распределённых таблиц с persistent_connections_limit.
  • 🪲 v14.6.2 Issue #3757 Исправлена ошибка, при которой счётчики состояния таблиц с суффиксом "_sec" (например, query_time_1min) на самом деле показывали миллисекунды вместо секунд.
  • 🪲 v14.6.1 Issue #3979 Исправлена ошибка, при которой статистика времени поиска SHOW INDEX <name> STATUS (search_statsms*) не совпадала со значениями, вычисленными из логов запросов; теперь отображаемое время соответствует реальному времени из логов.
  • 🪲 v14.5.8 Issue #3517 Обновлена обработка HTTP-заголовков, чтобы интеграции Buddy могли определять или переопределять заголовки, а не всегда принудительно использовать application/json.
  • 🪲 v14.5.7 Исправлен тест 226 для обеспечения стабильного порядка результатов, а также исправлена модель GTest для обработки смешанных JSON-массивов.
  • 🪲 v14.5.6 Исправлена сборка для Windows путём устранения несоответствия типов в binlog.cpp, теперь DoSaveMeta() корректно компилируется для платформ Windows.
  • 🪲 v14.5.5 Issue #805 Issue #807 Issue #3924 Исправлено непоследовательное поведение фасетирования JSON-атрибутов: теперь алиас JSON-массива в FACET ведёт себя так же, как фасетирование по самому массиву.
  • 🪲 v14.5.4 Issue #3927 Исправлен сбой в KNN-векторном поиске путём пропуска поиска по пустым индексам HNSW.
  • 🪲 v14.5.2 Issue #3669 Исправлен разбор MATCH(), теперь пустые группы, такие как (), не вызывают ошибку (например, запросы вида camera() теперь работают корректно).
  • 🪲 v14.5.1 PR #3961 Обновлена документация по резервному копированию для режима репликации mysqldump: объяснено использование --skip-lock-tables при дампе реплицируемых таблиц, исправлены несколько битых ссылок в руководстве.
  • 🪲 v14.3.2 Issue #2772 Исправлена ошибка, при которой некоторые команды, выполненные через MySQL клиент 9, вызывали ошибку "unexpected $undefined near '$$'" в логе запросов.
  • 🪲 v14.3.1 PR #3934 Обновлено требование к Manticore Buddy с версии 3.37.0 до 3.37.2, удалены избыточные проверки LOCK/UNLOCK TABLES (теперь обрабатываются демоном), исправлен разбор автодополнения, чтобы запросы с экранированными кавычками (например, \" или \') обрабатывались корректно, а не приводили к ошибкам.
  • 🪲 v14.2.1 Issue #3602 Исправлен сбой при использовании knn_dist() в выражении кастомного ранжирования с запросами KNN+MATCH; теперь такие запросы возвращают понятную ошибку вместо сбоя.
  • 🪲 v14.1.1 docs: исправлены мелкие ошибки перевода.

Version 14.1.0

Released: November 7th 2025

❤️ Мы хотим выразить искреннюю благодарность @ricardopintottrdata за их работу над PR #3792 и PR #3828 — решающими проблемы с подсчетом total в HAVING и ошибкой filter with empty name — а также @jdelStrother за их вклад с PR #3819, который улучшает обработку ParseCJKSegmentation, когда поддержка Jieba недоступна.

Ваши усилия помогают сделать проект сильнее — большое спасибо!

Рекомендуемые библиотеки

  • Рекомендуемая версия MCL: 8.1.0
  • Рекомендуемая версия Buddy: 3.37.0

Если вы следуете официальному руководству по установке, вам не о чем беспокоиться.

⚠️ Важно

Версия v14.0.0 обновляет протокол репликации. Если вы используете кластер репликации, вам нужно:

  • Сначала корректно остановить все ваши узлы
  • Затем запустить последний остановленный узел с параметром --new-cluster, используя инструмент manticore_new_cluster в Linux.
  • Подробнее о перезапуске кластера.

Новые функции и улучшения

  • 🆕 v14.1.0 Issue #3047 Добавлена поддержка операторов LOCK TABLES, генерируемых mysqldump, что повышает безопасность логических резервных копий.
  • ⚠️ v14.0.0 PR #3896 Добавлен индикатор прогресса для донорских и присоединяющихся узлов в репликации SST, отображаемый в SHOW STATUS.
  • 🆕 v13.16.0 PR #3894 Обновлен buddy с версии 3.36.1 до 3.37.0, добавлена опция "quorum".
  • 🆕 v13.15.0 PR #3842 Опция force_bigrams для плагинов fuzzy и autocomplete.

Исправления ошибок

  • 🪲 Issue #3994 Добавлено тестирование для Grafana версии 12.3.
  • 🪲 v14.0.1 Issue #3844 Исправлен сбой, вызванный использованием max(ft field).
  • 🪲 v13.15.13 PR #3828 Исправлена ошибка при использовании фильтра с пустым именем.
  • 🪲 v13.15.12 PR #3873 Обновлен buddy с 3.36.0 до 3.36.1 с проверкой режима RT в плагине EmulateElastic.
  • 🪲 v13.15.11 PR #3857 Добавлено тестирование для Filebeat версии 9.2.
  • 🪲 v13.15.10 PR #3880 Протестирован автоматический перевод документации после исправлений.
  • 🪲 v13.15.9 Issue #3783 Исправлена проблема, препятствующая нативной компиляции на FreeBSD.
  • 🪲 v13.15.8 Исправлены переводы документации.
  • 🪲 v13.15.7 PR #3868 Обновлен executor с 1.3.5 до 1.3.6, добавлена поддержка расширения iconv.
  • 🪲 v13.15.6 Исправлена проблема сборки fuzzer, связанная с issue 3817.
  • 🪲 v13.15.5 Issue #3644 Исправлен сбой, вызванный определёнными полнотекстовыми запросами.
  • 🪲 v13.15.4 Issue #3686 Исправлена проблема, из-за которой полнотекстовый запрос "(abc|def)" не работал как ожидалось.
  • 🪲 v13.15.3 Issue #3428 Добавлена возможность получения общего количества результатов для запросов с использованием HAVING.
  • 🪲 v13.15.2 Issue #3817 Добавлена опция searchd.expansion_phrase_warning.
  • 🪲 v13.15.1 PR #3848 Исправлена генерация ключей транзакций репликации и обработка конфликтующих транзакций.
  • 🪲 v13.14.0 Issue #3806 Исправлена ошибка CALL SUGGEST, не совпадавшая с триграммами.
  • 🪲 v13.13.8 PR #3839 Обновлен buddy с версии 3.35.4 до 3.35.5 для корректировки регулярного выражения для сопоставления соединений в SQL-запросах.
  • 🪲 v13.13.7 Issue #3815 Обновлен buddy с версии 3.35.3 до 3.35.4 для исправления проблемы с отрицательными ID в REPLACE.
  • 🪲 v13.13.6 PR #3830 Обновлен buddy с версии 3.35.1 до 3.35.3.
  • 🪲 v13.13.5 PR #3823 Добавлен интеграционный тест для Grafana.
  • 🪲 v13.13.4 PR #3819 Исправлена функция ParseCJKSegmentation, когда поддержка Jieba недоступна.
  • 🪲 v13.13.3 PR #3808 Исправлена обработка ошибок при использовании фильтров в JSON-запросах с правым соединением.
  • 🪲 v13.13.2 PR #3789 Проверены параметры KNN.
  • 🪲 v13.13.1 Issue #3800 Исправлены проблемы сборки при компиляции без поддержки cjk/jieba.

Version 13.13.0

Выпущено: 7 октября 2025

Рекомендуемые библиотеки

  • Рекомендуемая версия MCL: 8.1.0
  • Рекомендуемая версия Buddy: 3.35.1

Если вы следуете официальному руководству по установке, вам не нужно об этом беспокоиться.

⚠️ Важно

Поскольку файл конфигурации был обновлен, во время обновления на Linux вы можете увидеть предупреждение с вопросом, сохранить ли вашу версию или использовать новую из пакета. Если у вас есть пользовательская (не по умолчанию) конфигурация, рекомендуется сохранить вашу версию и обновить путь pid_file на /run/manticore/searchd.pid. Однако, даже если вы не измените путь, всё должно работать нормально.

Новые функции и улучшения

  • 🆕 v13.13.0 Добавлена поддержка MCL 8.1.0 с кэшем блоков SI.
  • 🆕 v13.12.0 Реализована опция secondary_index_block_cache, обновлено API вторичного индекса и встроены аксессоры сортировки.

Исправления ошибок

  • 🪲 v13.11.8 Issue #3791 Исправлена гонка между проверкой и вызовом сработавшего таймера.
  • 🪲 v13.11.7 Issue #1045 Исправлено предупреждение systemctl на RHEL 8 при обновлениях systemd путем замены устаревшего пути /var/run/manticore на правильный /run/manticore в конфигурации. Поскольку файл конфигурации был обновлен, во время обновления вы можете увидеть предупреждение с вопросом, сохранить ли вашу версию или использовать новую из пакета. Если у вас есть пользовательская (не по умолчанию) конфигурация, рекомендуется сохранить вашу версию и обновить путь pid_file на /run/manticore/searchd.pid.
  • 🪲 v13.11.6 PR #3766 Добавлена поддержка версии MCL 8.0.6.
  • 🪲 v13.11.5 PR #3767 Улучшены переводы документации на китайский и обновлены подмодули.
  • 🪲 v13.11.4 PR #3765 Исправлена обработка псевдонимов атрибутов при соединениях.
  • 🪲 v13.11.3 PR #3763 Исправлен сбой, который мог возникать при пакетных соединениях по строковым атрибутам, и решена проблема, когда фильтры иногда не работали с LEFT JOIN.
  • 🪲 v13.11.2 Issue #3065 Исправлен сбой при вставке данных в колоннарную таблицу с включенным index_field_lengths.
  • 🪲 v13.11.1 Issue #3751 Исправлен сбой, возникавший при удалении документа с включенными embeddings.

Version 13.11.1

Выпущено: 13 сентября 2025

Исправления ошибок

  • 🪲 v13.11.1 Issue #3751 Исправлен сбой при удалении документа с включенными embeddings.

Version 13.11.0

Выпущено: 13 сентября 2025

Основным нововведением этого релиза является Auto Embeddings — новая функция, которая делает семантический поиск таким же простым, как SQL. Не нужны внешние сервисы или сложные конвейеры: просто вставьте текст и ищите с помощью естественного языка.

Что предлагают Auto Embeddings

  • Автоматическая генерация эмбеддингов непосредственно из вашего текста
  • Запросы на естественном языке, которые понимают смысл, а не только ключевые слова
  • Поддержка нескольких моделей (OpenAI, Hugging Face, Voyage, Jina)
  • Бесшовная интеграция с SQL и JSON API

Рекомендуемые библиотеки

  • Рекомендуемая версия MCL: 8.0.3
  • Рекомендуемая версия Buddy: 3.35.1

Если вы следуете официальному руководству по установке, вам не о чем беспокоиться.

Рекомендуемая версия MCL: 8.0.1 Рекомендуемая версия Buddy: 3.34.2

Новые функции и улучшения

  • 🆕 v13.11.0 PR #3746 Добавлена поддержка "query" в JSON-запросах для генерации эмбеддингов.
  • 🆕 v13.10.0 Issue #3709 Пакет manticore-server RPM больше не владеет /run.
  • 🆕 v13.9.0 PR #3716 Добавлена поддержка boolean_simplify в конфигурации.
  • 🆕 v13.8.0 Issue #3253 Установлена конфигурация sysctl для увеличения vm.max_map_count для больших наборов данных.
  • 🆕 v13.7.0 PR #3681 Добавлена поддержка alter table <table> modify column <column> api_key=<key>.

Исправления ошибок

  • 🪲 v13.10.5 PR #3737 Опция scroll теперь корректно возвращает все документы с большими 64-битными ID.
  • 🪲 v13.10.4 PR #3736 Исправлен сбой при использовании KNN с фильтровым деревом.
  • 🪲 v13.10.3 Issue #3520 Эндпоинт /sql больше не разрешает команду SHOW VERSION.
  • 🪲 v13.10.2 PR #3637 Обновлен скрипт установки для Windows.
  • 🪲 v13.10.1 Исправлено определение локального часового пояса в Linux.
  • 🪲 v13.9.2 PR #3726 Дублирующиеся ID в колоннарном режиме теперь корректно возвращают ошибку.
  • 🪲 v13.9.1 PR #3333 Руководство теперь автоматически переводится.
  • 🪲 v13.8.6 PR #3715 Исправлена проблема генерации эмбеддингов, когда все документы в пакете были пропущены.
  • 🪲 v13.8.5 PR #3711 Добавлены модели эмбеддингов Jina и Voyage, а также другие изменения, связанные с автоматическими эмбеддингами.
  • 🪲 v13.8.4 PR #3710 Исправлен сбой при объединённых запросах с несколькими фасетами.
  • 🪲 v13.8.3 Исправлена проблема, когда коммиты удаления/обновления в транзакции с несколькими запросами на _bulk эндпоинте не учитывались как ошибки.
  • 🪲 v13.8.2 PR #3705 Исправлен сбой при объединении по неколоннарным строковым атрибутам и улучшено сообщение об ошибках.
  • 🪲 v13.8.1 PR #3704 Исправлен сбой в эмбеддингах запросов при отсутствии указанной модели; добавлена строка эмбеддингов в коммуникацию master-agent; добавлены тесты.
  • 🪲 v13.7.2 PR #Buddy#589 Убран дефолтный хак IDF для нечеткого поиска.
  • 🪲 v13.7.1 Issue #3454 Исправлено некорректное декодирование scroll с большими 64-битными ID.
  • 🪲 v13.6.9 Issue #3674 Исправлена проблема драйвера/пула соединений JDBC+MySQL с настройкой transaction_read_only.
  • 🪲 v13.6.8 PR #3676 Исправлен сбой при пустом наборе результатов, возвращаемом моделью embeddings.

Версия 13.6.7

Выпущено: 8 августа 2025

Рекомендуемая версия MCL: 8.0.1 Рекомендуемая версия Buddy: 3.34.2

Если вы следуете официальному руководству по установке, вам не о чем беспокоиться.

Новые функции и улучшения

  • 🆕 v13.6.0 Issue #2226 Поддержка явного '|' (ИЛИ) в операторах PHRASE, PROXIMITY и QUORUM.
  • 🆕 v13.5.0 PR #3591 Автоматическая генерация embeddings в запросах (В разработке, ещё не готово для продакшена).
  • 🆕 v13.4.0 PR #3585 Исправлена логика предпочтения количества потоков buddy из конфигурации buddy_path, если установлено, вместо использования значения демона.
  • 🆕 v13.3.0 PR #3577 Поддержка join с локальными распределёнными таблицами.
  • 🆕 #3647 Добавлена поддержка Debian 13 "Trixie"

Исправления ошибок

  • 🪲 v13.6.7 Issue #3524 Исправлена проблема с сохранением сгенерированных embeddings в построчном хранении.
  • 🪲 v13.6.6 Issue #3563 Исправлены проблемы с Sequel Ace и другими интеграциями, приводившие к ошибкам "unknown sysvar".
  • 🪲 v13.6.5 Issue #3467 Исправлены проблемы с DBeaver и другими интеграциями, приводившие к ошибкам "unknown sysvar".
  • 🪲 v13.6.4 Issue #3524 Исправлена проблема с конкатенацией multi-field embeddings; также исправлена генерация embeddings из запросов.
  • 🪲 v13.6.3 Issue #3641 Исправлена ошибка в версии 13.6.0, когда фраза теряла все ключевые слова в скобках, кроме первого.
  • 🪲 v13.6.2 Исправлена утечка памяти в transform_phrase.
  • 🪲 v13.6.1 Исправлена утечка памяти в версии 13.6.0.
  • 🪲 v13.5.2 Issue #3651 Исправлены дополнительные проблемы, связанные с fuzz-тестированием полнотекстового поиска.
  • 🪲 v13.5.1 Issue #3560 Исправлен случай, когда OPTIMIZE TABLE мог зависать бесконечно с данными KNN.
  • 🪲 v13.4.2 Issue #2544 Исправлена проблема, при которой добавление столбца float_vector могло повредить индексы.
  • 🪲 v13.4.1 Issue #3651 Добавлено fuzz-тестирование для парсинга полнотекстового поиска и исправлены несколько найденных проблем.
  • 🪲 v13.3.1 Issue #3583 Исправлен сбой при использовании сложных булевых фильтров с подсветкой.
  • 🪲 v13.2.7 Issue #3481 Исправлен сбой при одновременном использовании HTTP update, распределённой таблицы и неправильного кластера репликации.
  • 🪲 v13.2.6 PR #3567 Обновлена зависимость manticore-backup до версии 1.9.6.
  • 🪲 v13.2.5 PR #3565 Исправлена настройка CI для улучшения совместимости Docker-образа.
  • 🪲 v13.2.4 Исправлена обработка длинных токенов. Некоторые специальные токены (например, шаблоны regex) могли создавать слишком длинные слова, теперь они сокращаются перед использованием.

Версия 13.2.3

Выпущено: 8 июля 2025

Ломающие изменения

  • ⚠️ PR #3586 Поддержка Debian 10 (Buster) прекращена. Debian 10 достиг конца срока поддержки 30 июня 2024 года. Пользователям рекомендуется обновиться до Debian 11 (Bullseye) или Debian 12 (Bookworm).
  • ⚠️ v13.0.0 Обновлено API библиотеки KNN для поддержки пустых значений float_vector. Это обновление не меняет формат данных, но увеличивает версию API Manticore Search / MCL.
  • ⚠️ v12.0.0 PR #3516 Исправлена ошибка с некорректными ID строк источника и назначения во время обучения и построения KNN индекса. Это обновление не меняет формат данных, но увеличивает версию API Manticore Search / MCL.
  • ⚠️ v11.0.0 Добавлена поддержка новых функций поиска KNN векторов, таких как квантизация, пересчет и сверхвыборка. Эта версия меняет формат данных KNN и синтаксис SQL KNN_DIST(). Новая версия может читать старые данные, но старые версии не смогут читать новый формат.

Новые функции и улучшения

  • 🆕 v13.2.0 PR #3549 Исправлена проблема с @@collation_database, вызывавшая несовместимость с некоторыми версиями mysqldump
  • 🆕 v13.1.0 Issue #3489 Исправлена ошибка в Fuzzy Search, препятствовавшая разбору некоторых SQL-запросов
  • 🆕 v12.1.0 Issue #3426 Добавлена поддержка операционных систем RHEL 10
  • 🆕 v11.1.0 Добавлена поддержка пустых векторов с плавающей точкой в KNN поиске
  • 🆕 v10.2.0 Issue #3252 log_level теперь также регулирует уровень подробности логирования Buddy

Исправления ошибок

Версия 10.1.0

Выпущено: 9 июня 2025

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

Начиная с версии 10.1.0, CentOS 7 больше не поддерживается. Пользователям рекомендуется перейти на поддерживаемую операционную систему.

Критические изменения

Новые функции и улучшения

  • 🆕 v10.1.0 Issue #537 Добавлен встроенный экспортер Prometheus
  • 🆕 v9.8.0 Issue #3409 Добавлена команда ALTER TABLE tbl REBUILD KNN
  • 🆕 v9.7.0 Issue #1778 Добавлена автоматическая генерация эмбеддингов (пока не анонсируем официально, так как код в основной ветке, но требует дополнительного тестирования)
  • 🆕 v9.6.0 Повышена версия API KNN для поддержки автоэмбеддингов
  • 🆕 v9.5.0 Issue #1894 Улучшено восстановление кластера: периодическое сохранение seqno для более быстрого перезапуска узла после сбоя
  • 🆕 v9.4.0 Issue #2400 Добавлена поддержка последних версий Logstash и Beats

Исправления ошибок

  • 🪲 v10.0.1 Исправлена обработка форм слов: пользовательские формы теперь переопределяют автоматически сгенерированные; добавлены тестовые случаи в тест 22
  • 🪲 v9.8.2 Исправление: обновлен deps.txt для включения исправлений упаковки в MCL, связанных с библиотекой эмбеддингов
  • 🪲 v9.8.1 Исправление: обновлен deps.txt с исправлениями упаковки для MCL и библиотеки эмбеддингов
  • 🪲 v9.7.3 Issue #3306 Исправлен сбой с сигналом 11 во время индексации
  • 🪲 v9.7.2 Issue #3109 Исправлена проблема, когда несуществующие @@variables всегда возвращали 0
  • 🪲 v9.7.1 Issue #3377 Исправлен сбой, связанный с remove_repeats()
  • 🪲 v9.6.3 PR #3411 Исправление: использование динамического определения версий для метрик телеметрии
  • 🪲 v9.6.2 Исправление: небольшое исправление вывода в SHOW VERSION
  • 🪲 v9.6.1 Исправление: сбой при создании таблицы с атрибутом KNN без модели
  • 🪲 v9.5.16 Issue #3342 Исправлена проблема, когда SELECT ... FUZZY=0 не всегда отключал нечеткий поиск
  • 🪲 v9.5.15 PR #3397 Добавлена поддержка MCL 4.2.2; исправлены ошибки с более старыми форматами хранения
  • 🪲 v9.5.14 Issue #3392 Исправлена некорректная обработка строк в HTTP JSON ответах
  • 🪲 v9.5.13 Issue #3356 Исправлен сбой в сложном случае полнотекстового запроса (общий подтермин)
  • 🪲 v9.5.12 Исправлена опечатка в сообщении об ошибке автоматической очистки дискового чанка
  • 🪲 v9.5.11 Issue #3195 Улучшена автоматическая очистка дискового чанка: пропуск сохранения, если выполняется оптимизация
  • 🪲 v9.5.10 Issue #3313 Исправлена проверка дублирующихся ID для всех дисковых чанков в RT таблице с использованием indextool
  • 🪲 v9.5.9 Issue #3132 Добавлена поддержка сортировки _random в JSON API
  • 🪲 v9.5.8 Issue #3382 Исправлена проблема: невозможность использовать uint64 ID документа через JSON HTTP API
  • 🪲 v9.5.7 Issue #3385 Исправлены некорректные результаты при фильтрации по id != value
  • 🪲 v9.5.6 PR #538 Исправлена критическая ошибка с нечетким сопоставлением в некоторых случаях
  • 🪲 v9.5.5 Issue #3199 Исправлена декодировка пробелов в параметрах HTTP-запросов Buddy (например, %20 и +)
  • 🪲 v9.5.4 Issue #3133 Исправлена некорректная сортировка по json.field в фасетном поиске
  • 🪲 v9.5.3 Issue #3091 Исправлены несогласованные результаты поиска для разделителей в SQL и JSON API
  • 🪲 v9.5.2 Issue #2819 Повышена производительность: заменён DELETE FROM на TRUNCATE для распределённых таблиц
  • 🪲 v9.5.1 Issue #3080 Исправлен сбой при фильтрации с псевдонимом geodist() с JSON-атрибутами

Версия 9.3.2

Выпущено: 2 мая 2025

В этом релизе исправлено множество ошибок и улучшена стабильность, улучшено отслеживание использования таблиц, а также усовершенствовано управление памятью и ресурсами.

❤️ Особая благодарность @cho-m за исправление совместимости сборки с Boost 1.88.0 и @benwills за улучшение документации по stored_only_fields.

  • 🪲 v9.3.2 Исправлена проблема, когда столбец "Show Threads" показывал активность CPU в виде числа с плавающей точкой вместо строки; также исправлена ошибка разбора результата PyMySQL из-за неправильного типа данных.

  • 🪲 v9.3.1 Issue #3343 Исправлены оставшиеся файлы tmp.spidx при прерывании процесса оптимизации.

  • 🆕 v9.3.0 PR #3337 Добавлен счётчик команд на таблицу и подробная статистика использования таблиц.

  • 🪲 v9.2.39 Issue #3236 Исправление: предотвращение повреждения таблиц за счёт удаления сложных обновлений чанков. Использование функций ожидания внутри последовательного воркера нарушало последовательную обработку, что могло повредить таблицы. Переосмыслен автосброс. Удалена внешняя очередь опроса для избежания ненужных блокировок таблиц. Добавлено условие "малой таблицы": если количество документов ниже 'предела малой таблицы' (8192) и не используется Вторичный Индекс (SI), сброс пропускается.

  • 🪲 v9.2.38 Исправление: пропуск создания Вторичного Индекса (SI) для фильтров с использованием ALL/ANY по спискам строк, без влияния на JSON-атрибуты.

  • 🪲 v9.2.37 Issue #2898 Добавлена поддержка обратных кавычек для системных таблиц.

  • 🪲 v9.2.36 Исправление: использование заполнителя для операций кластера в устаревшем коде. В парсере теперь чётко разделяются поля для имён таблиц и кластеров.

  • 🪲 v9.2.35 Исправление: сбой при удалении кавычек с одиночной '.

  • 🪲 v9.2.34 Issue #3090 Исправление: обработка больших ID документов (ранее могла не находить их).

  • 🪲 v9.2.33 Исправление: использование беззнаковых целых для размеров битовых векторов.

  • 🪲 v9.2.32 Исправление: снижение пикового использования памяти при слиянии. Поиск docid-to-rowid теперь использует 12 байт на документ вместо 16 байт. Пример: 24 ГБ ОЗУ для 2 миллиардов документов вместо 36 ГБ.

  • 🪲 v9.2.31 Issue #3238 Исправление: некорректное значение COUNT(*) в больших таблицах реального времени.

  • 🪲 v9.2.30 Исправление: неопределенное поведение при обнулении строковых атрибутов.

  • 🪲 v9.2.29 Небольшое исправление: улучшен текст предупреждения.

  • 🪲 v9.2.28 Issue #3290 Улучшение: усовершенствован indextool --buildidf

  • 🪲 v9.2.27 Issue #3032 С интеграцией Kafka теперь можно создавать источник для конкретного раздела Kafka.

  • 🪲 v9.2.26 Issue #3301 Исправление: ORDER BY и WHERE по id могли вызывать ошибки OOM (Out Of Memory).

  • 🪲 v9.2.25 Issue #3171 Исправление: сбой из-за ошибки сегментации при использовании grouper с несколькими JSON-атрибутами в RT-таблице с несколькими дисковыми чанками

  • 🪲 v9.2.24 Issue #3246 Исправление: запросы WHERE string ANY(...) не работали после сброса RAM-чанка.

  • 🪲 v9.2.23 PR #518 Небольшие улучшения синтаксиса автошардинга.

  • 🪲 v9.2.22 Issue #2763 Исправление: глобальный idf-файл не загружался при использовании ALTER TABLE.

  • 🪲 v9.2.21 Исправление: глобальные idf-файлы могут быть большими. Теперь таблицы освобождаются раньше, чтобы избежать удержания ненужных ресурсов.

  • 🪲 v9.2.20 PR #3277 Улучшение: лучшая валидация опций шардинга.

  • 🪲 v9.2.19 PR #3275 Исправление: совместимость сборки с Boost 1.88.0.

  • 🪲 v9.2.18 Issue #3228 Исправление: сбой при создании распределенной таблицы (проблема с недопустимым указателем).

  • 🪲 v9.2.17 PR #3272 Исправление: проблема с многострочным нечетким FACET.

  • 🪲 v9.2.16 Issue #3063 Исправление: ошибка в расчёте расстояния при использовании функции GEODIST.

  • 🪲 v9.2.15 Issue #3027 Небольшое улучшение: поддержка формата фильтра query_string из Elastic.

Версия 9.2.14

Выпущено: 28 марта 2025

Небольшие изменения

  • Commit Реализован флаг --mockstack для расчёта требований к стеку рекурсивных операций. Новый режим --mockstack анализирует и сообщает необходимые размеры стека для оценки рекурсивных выражений, операций сопоставления шаблонов, обработки фильтров. Рассчитанные требования к стеку выводятся в консоль для отладки и оптимизации.
  • Issue #3058 Включена по умолчанию опция boolean_simplify.
  • Issue #3172 Добавлена новая опция конфигурации: searchd.kibana_version_string, которая может быть полезна при использовании Manticore с определёнными версиями Kibana или OpenSearch Dashboards, ожидающими конкретную версию Elasticsearch.
  • Issue #3211 Исправлена работа CALL SUGGEST с двухсимвольными словами.
  • Issue #490 Улучшен нечеткий поиск: ранее он иногда не мог найти "defghi" при поиске "def ghi", если существовал другой совпадающий документ.
  • ⚠️ BREAKING Issue #3165 Изменено _id на id в некоторых HTTP JSON ответах для согласованности. Убедитесь, что обновили ваше приложение соответствующим образом.
  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ Issue #3186 Добавлена проверка server_id при присоединении к кластеру, чтобы гарантировать уникальность ID каждого узла. Операция JOIN CLUSTER теперь может завершиться ошибкой с сообщением о дублировании server_id, если присоединяемый узел имеет такой же server_id, как и существующий узел в кластере. Для решения этой проблемы убедитесь, что каждый узел в кластере репликации имеет уникальный server_id. Вы можете изменить значение по умолчанию server_id в разделе "searchd" вашего конфигурационного файла на уникальное значение перед попыткой присоединения к кластеру. Это изменение обновляет протокол репликации. Если вы управляете кластером репликации, вам необходимо:
    • Сначала корректно остановить все ваши узлы
    • Затем запустить последний остановленный узел с параметром --new-cluster, используя инструмент manticore_new_cluster в Linux.
    • Подробнее о перезапуске кластера.

Исправления ошибок

  • Commit 6fda Исправлен сбой, вызванный потерей планировщика после ожидания; теперь специфические планировщики, такие как serializer, корректно восстанавливаются.
  • Commit c333 Исправлена ошибка, при которой веса из правой присоединённой таблицы не могли использоваться в выражении ORDER BY.
  • Issue #2644 gcc 14.2.0: исправлена ошибка вызова lower_bound с const knn::DocDist_t*&. ❤️ Спасибо @Azq2 за PR.
  • Issue #3018 Исправлена проблема с обработкой имён таблиц в верхнем регистре при авто-схеме вставок.
  • Issue #3119 Исправлен сбой при декодировании некорректного base64 ввода.
  • Issue #3121 Исправлены две связанные проблемы с KNN индексом при ALTER: векторы с плавающей точкой теперь сохраняют исходные размеры, и KNN индексы корректно генерируются.
  • Issue #3123 Исправлен сбой при построении вторичного индекса на пустом JSON столбце.
  • Issue #3138 Исправлен сбой, вызванный дублирующимися записями.
  • Issue #3151 Исправлено: опция fuzzy=1 не могла использоваться с ranker или field_weights.
  • Issue #3163 Исправлена ошибка, при которой SET GLOBAL timezone не имел эффекта.
  • Issue #3181 Исправлена проблема, при которой значения текстовых полей могли теряться при использовании ID больше 2^63.
  • Issue #3189 Исправлено: операторы UPDATE теперь корректно учитывают настройку query_log_min_msec.
  • Issue #3247 Исправлена гонка при сохранении реального времени дисковых чанков, которая могла вызывать сбой JOIN CLUSTER.

Версия 7.4.6

Выпущена: 28 февраля 2025

Основные изменения

  • Issue #832 Интеграция с Kibana для более простого и эффективного визуального представления данных.

Незначительные изменения

  • Issue #1727 Исправлены различия в точности чисел с плавающей точкой между arm64 и x86_64.
  • Issue #2995 Реализованы оптимизации производительности для пакетной обработки join.
  • Issue #3039 Реализованы оптимизации производительности для EstimateValues в гистограммах.
  • Issue #3099 Добавлена поддержка Boost 1.87.0. ❤️ Спасибо, @cho-m за PR.
  • Issue #77 Оптимизировано повторное использование блоков данных при создании фильтров с множественными значениями; добавлены min/max в метаданные атрибутов; реализована предварительная фильтрация значений фильтра на основе min/max.

Исправления ошибок

  • Commit 73ac Исправлена обработка выражений в присоединённых запросах при использовании атрибутов из обеих таблиц; исправлена опция index_weights для правой таблицы.
  • Issue #2915 Использование avg() в запросе SELECT ... JOIN могло приводить к некорректным результатам; теперь исправлено.
  • Issue #2996 Исправлен некорректный набор результатов, вызванный неявным ограничением при включённой пакетной обработке join.
  • Issue #3031 Исправлен сбой демона при завершении работы, если в процессе был активный слияние чанков.
  • Issue #3037 Исправлена проблема, при которой IN(...) мог возвращать некорректные результаты.
  • Issue #3038 Установка max_iops / max_iosize в версии 7.0.0 могла ухудшать производительность индексации; теперь исправлено.
  • Issue #3042 Исправлена утечка памяти в кеше запросов join.
  • Issue #3052 Исправлена обработка опций запросов в присоединённых JSON запросах.
  • Issue #3054 Исправлена проблема с командой ATTACH TABLE.
  • Issue #3079 Исправлены несоответствия в сообщениях об ошибках.
  • Issue #3087 Установка diskchunk_flush_write_timeout=-1 для каждой таблицы не отключала сброс индекса; теперь это исправлено.
  • Issue #3088 Устранены дублирующиеся записи после массовой замены больших идентификаторов.
  • Issue #3126 Исправлен сбой демона, вызванный полнотекстовым запросом с одним оператором NOT и ранжировщиком выражений.
  • Issue #3128 Исправлена потенциальная уязвимость в библиотеке CJSON. ❤️ Спасибо, @tabudz за PR.

Версия 7.0.0

Выпущено: 30 января 2025

Основные изменения

Незначительные изменения

  • ⚠️ BREAKING Issue #1111 Исправлена поддержка global_idf в RT таблицах. Требуется пересоздание таблицы.
  • ⚠️ BREAKING Issue #2103 Удалены тайские символы из внутреннего набора символов cjk. Обновите определения наборов символов соответственно: если у вас есть cjk,non_cjk и тайские символы важны для вас, измените на cjk,thai,non_cjk или cont,non_cjk, где cont — новое обозначение для всех языков с непрерывным письмом (т.е. cjk + thai). Измените существующие таблицы с помощью ALTER TABLE.
  • ⚠️ BREAKING Issue #2468 CALL SUGGEST / QSUGGEST теперь совместимы с распределёнными таблицами. Это увеличивает версию протокола мастер/агент. Если вы используете Manticore Search в распределённой среде с несколькими инстансами, сначала обновите агенты, затем мастера.
  • ⚠️ BREAKING Issue #2889 Изменено имя столбца с Name на Variable name для PQ SHOW META.
  • ⚠️ BREAKING Issue #879 Введён поблочный binlog с новыми опциями: binlog_common, binlog для create table / alter table. Перед обновлением до новой версии необходимо корректно завершить работу инстанса Manticore.
  • ⚠️ BREAKING Issue #1789 Исправлено некорректное сообщение об ошибке при присоединении узла к кластеру с неправильной версией протокола репликации. Это изменение обновляет протокол репликации. Если вы используете кластер репликации, необходимо:
    • Сначала корректно остановить все узлы
    • Затем запустить последний остановленный узел с --new-cluster, используя инструмент manticore_new_cluster в Linux.
    • Подробнее о перезапуске кластера.
  • ⚠️ BREAKING Issue #2308 Добавлена поддержка нескольких таблиц в ALTER CLUSTER ADD и DROP. Это изменение также влияет на протокол репликации. См. предыдущий раздел для рекомендаций по обновлению.
  • Issue #2997 Исправлена проблема dlopen на Macos.
  • Commit 4954 Изменён стандартный порог для OPTIMIZE TABLE на таблицах с KNN индексами для улучшения производительности поиска.
  • Commit cfc8 Добавлена поддержка COUNT(DISTINCT) для ORDER BY в FACET и GROUP BY.
  • Issue #1103 Улучшена ясность в логировании слияния чанков.
  • Issue #1130 Добавлена поддержка для DBeaver.
  • Issue #1546 Реализованы вторичные индексы для функций POLY2D()/GEOPOLY2D().
  • Issue #1630 HTTP-запросы теперь поддерживают Content-Encoding: gzip.
  • Issue #1831 Добавлена команда SHOW LOCKS.
  • Issue #2187 Разрешён запрос Buddy к демону обходить ограничение searchd.max_connections.
  • Issue #2208 Добавлена поддержка объединения таблиц через JSON HTTP интерфейс.
  • Issue #2235 Логирование успешно обработанных запросов через Buddy в их исходной форме.
  • Issue #2249 Добавлен специальный режим запуска mysqldump для реплицируемых таблиц.
  • Issue #2268 Улучшено переименование внешних файлов при копировании для операторов CREATE TABLE и ALTER TABLE.
  • Issue #2402 Обновлено значение по умолчанию для searchd.max_packet_size до 128MB.
  • Issue #2419 Добавлена поддержка IDF boost modifier в JSON "match".
  • Issue #2430 Улучшена синхронизация записи binlog для предотвращения ошибок.
  • Issue #2458 Включена поддержка zlib в пакетах для Windows.
  • Issue #2479 Добавлена поддержка команды SHOW TABLE INDEXES.
  • Issue #2485 Установлены метаданные сессии для ответов Buddy.
  • Issue #2490 Разрешение в миллисекундах для агрегаций на совместимых конечных точках.
  • Issue #2500 Изменены сообщения об ошибках для операций кластера при сбое запуска репликации.
  • Issue #2584 Новые метрики производительности в SHOW STATUS: min/max/avg/95-й/99-й перцентиль по типу запроса за последние 1, 5 и 15 минут.
  • Issue #2639 Заменены все вхождения index на table в запросах и ответах.
  • Issue #2643 Добавлен столбец distinct в результаты агрегаций HTTP /sql эндпоинта.
  • Issue #268 Реализовано автодетектирование типов данных, импортируемых из Elasticsearch.
  • Issue #2744 Добавлена поддержка сопоставления (collation) для выражений сравнения строковых JSON-полей.
  • Issue #2752 Добавлена поддержка выражения uuid_short в списке select.
  • Issue #2783 Manticore Search теперь запускает Buddy напрямую без обёртки manticore-buddy.
  • Issue #2785 Различаются сообщения об ошибках для отсутствующих таблиц и таблиц, не поддерживающих операции вставки.
  • Issue #2789 OpenSSL 3 теперь статически встроен в searchd.
  • Issue #2790 Добавлена инструкция CALL uuid_short для генерации последовательностей с несколькими значениями uuid_short.
  • Issue #2803 Добавлены отдельные опции для правой таблицы в операции JOIN.
  • Issue #2810 Улучшена производительность агрегаций HTTP JSON до уровня GROUP BY в SphinxQL.
  • Issue #2854 Добавлена поддержка fixed_interval в запросах Kibana, связанных с датами.
  • Issue #2909 Реализована пакетная обработка для JOIN-запросов, что улучшает производительность некоторых JOIN-запросов в сотни и даже тысячи раз.
  • Issue #2937 Включено использование веса присоединённой таблицы в fullscan-запросах.
  • Issue #2953 Исправлено логирование для join-запросов.
  • Issue #337 Исключения Buddy скрыты из лога searchd в режиме без отладки.
  • Issue #2931 Завершение работы демона с сообщением об ошибке, если пользователь указал неправильные порты для слушателя репликации.

Исправления ошибок

  • Commit 0c6b Исправлено: Неправильные результаты в JOIN-запросах с более чем 32 столбцами.
  • Issue #2335 Исправлена ошибка, при которой объединение таблиц не работало, если в условии использовались два json-атрибута.
  • Issue #2338 Исправлена некорректная total_relation в мультизапросах с cutoff.
  • Issue #2366 Исправлена фильтрация по json.string в правой таблице при соединении таблиц.
  • Issue #2406 Включена возможность использования null для всех значений в любых POST HTTP JSON эндпоинтах (insert/replace/bulk). В этом случае используется значение по умолчанию.
  • Issue #2418 Оптимизировано потребление памяти за счёт корректировки выделения max_packet_size сетевого буфера для начального зондирования сокета.
  • Issue #2420 Исправлена вставка unsigned int в bigint атрибут через JSON интерфейс.
  • Issue #2422 Исправлена работа вторичных индексов с exclude фильтрами и включённым pseudo_sharding.
  • Issue #2423 Исправлена ошибка в manticore_new_cluster.
  • Issue #2448 Исправлен сбой демона при некорректном запросе _update.
  • Issue #2452 Исправлена неспособность гистограмм обрабатывать value фильтры с исключениями.
  • Issue #55 Исправлены knn запросы к распределённым таблицам.
  • Issue #68 Улучшена обработка exclude фильтров при кодировании таблиц в columnar accessor.
  • Commit 0eb1 Исправлен парсер выражений, который не учитывал переопределённый thread_stack.
  • Commit c304 Исправлен сбой при клонировании columnar IN выражения.
  • Commit edad Исправлена ошибка инверсии в итераторе bitmap, вызывавшая сбой.
  • Commit fc30 Исправлена проблема, при которой некоторые пакеты Manticore автоматически удалялись unattended-upgrades.
  • Issue #1019 Улучшена обработка запросов из инструмента DbForge MySQL.
  • Issue #1107 Исправлено экранирование специальных символов в CREATE TABLE и ALTER TABLE. ❤️ Спасибо, @subnix за PR.
  • Issue #116 Исправлена взаимная блокировка при обновлении blob атрибута в замороженном индексе. Взаимная блокировка возникала из-за конфликтующих блокировок при попытке разморозить индекс. Это могло привести к сбою в manticore-backup.
  • Issue #1818 OPTIMIZE теперь выдаёт ошибку при попытке оптимизации замороженной таблицы.
  • Issue #2001 Разрешено использовать имена функций в качестве имён столбцов.
  • Issue #2153 Исправлен сбой демона при запросе настроек таблицы с неизвестным дисковым чанком.
  • Issue #2184 Исправлена проблема, при которой searchd зависал при остановке после FREEZE и FLUSH RAMCHUNK.
  • Issue #2228 Удалены токены, связанные с датой/временем (и regex) из списка зарезервированных слов.
  • Issue #2255 Исправлен сбой при использовании FACET с более чем 5 полями сортировки.
  • Issue #2265 Исправлен сбой восстановления mysqldump с включённым index_field_lengths.
  • Issue #2291 Исправлен сбой при выполнении команды ALTER TABLE.
  • Issue #2333 Исправлена MySQL DLL в Windows пакете для корректной работы индексатора.
  • Issue #2393 Исправлена ошибка компиляции GCC. ❤️ Спасибо, @animetosho за PR.
  • Issue #2447 Исправлена проблема экранирования в _update.
  • Issue #2460 Исправлен сбой индексатора при объявлении нескольких атрибутов или полей с одинаковым именем.
  • Issue #2467 Исправлен сбой демона при некорректном преобразовании для вложенных bool запросов в "compat" поисковых эндпоинтах.
  • Issue #2493 Исправлено расширение в фразах с модификаторами.
  • Issue #2535 Исправлен сбой демона при использовании полнотекстовых операторов ZONE или ZONESPAN.
  • Issue #2552 Исправлена генерация инфиксов для plain и RT таблиц с словарём ключевых слов.
  • Issue #2571 Исправлен ответ с ошибкой в запросе FACET; установлен порядок сортировки по умолчанию DESC для FACET с COUNT(*).
  • Issue #2580 Исправлен сбой демона на Windows при запуске.
  • Issue #2603 Исправлено усечение запроса для HTTP эндпоинтов /sql и /sql?mode=raw; сделаны запросы с этих эндпоинтов согласованными без необходимости заголовка query=.
  • Issue #2623 Исправлена проблема, когда авто-схема создает таблицу, но одновременно происходит сбой.
  • Issue #2627 Исправлена библиотека HNSW для поддержки загрузки нескольких KNN индексов.
  • Issue #2630 Исправлена проблема зависания при одновременном возникновении нескольких условий.
  • Issue #2645 Исправлен сбой с фатальной ошибкой при использовании OR с KNN поиском.
  • Issue #2647 Исправлена проблема, когда indextool --mergeidf *.idf --out global.idf удаляет выходной файл после создания.
  • Issue #2658 Исправлен сбой демона при подзапросе с ORDER BY строкой во внешнем запросе.
  • Issue #2686 Исправлен сбой при обновлении атрибута с плавающей точкой вместе со строковым атрибутом.
  • Issue #2704 Исправлена проблема, когда несколько стоп-слов из токенизаторов lemmatize_xxx_all увеличивают hitpos последующих токенов.
  • Issue #2708 Исправлен сбой при ALTER ... ADD COLUMN ... TEXT.
  • Issue #2737 Исправлена проблема, когда обновление blob-атрибута в замороженной таблице с хотя бы одним RAM-чанком вызывает ожидание последующих SELECT запросов до разморозки таблицы.
  • Issue #2742 Исправлен пропуск кэша запросов для запросов с упакованными факторами.
  • Issue #2775 Manticore теперь сообщает об ошибке при неизвестном действии вместо сбоя на запросах _bulk.
  • Issue #2791 Исправлен возврат ID вставленного документа для HTTP эндпоинта _bulk.
  • Issue #2797 Исправлен сбой в grouper при обработке нескольких таблиц, одна из которых пустая, а другая имеет разное количество совпадающих записей.
  • Issue #2835 Исправлен сбой в сложных SELECT запросах.
  • Issue #2872 Добавлено сообщение об ошибке, если аргумент ALL или ANY в выражении IN не является JSON-атрибутом.
  • Issue #2882 Исправлен сбой демона при обновлении MVA в больших таблицах.
  • Issue #2888 Исправлен сбой при ошибке токенизации с libstemmer. ❤️ Спасибо, @subnix за PR.
  • Issue #2919 Исправлена проблема, когда вес из правой таблицы при объединении не работал корректно в выражениях.
  • Issue #2919 Исправлена проблема, когда вес правой объединённой таблицы не работает в выражениях.
  • Issue #325 Исправлен сбой CREATE TABLE IF NOT EXISTS ... WITH DATA, если таблица уже существует.
  • Issue #351 Исправлена ошибка неопределённого ключа массива "id" при подсчёте по KNN с ID документа.
  • Issue #359 Исправлена функциональность REPLACE INTO cluster_name:table_name.
  • Issue #67 Исправлена фатальная ошибка при запуске контейнера Manticore Docker с --network=host.

Version 6.3.8

Выпущено: 22 ноября 2024

Версия 6.3.8 продолжает серию 6.3 и включает только исправления ошибок.

Исправления ошибок

  • PR #2777 Исправлен расчёт доступных потоков при ограничении параллелизма запросов настройками threads или max_threads_per_query.

manticore-extra v1.1.20

Выпущено: 7 октября 2024

Исправления ошибок

  • Issue #64 Решена проблема, когда утилита unattended-upgrades, автоматически устанавливающая обновления пакетов в системах на базе Debian, ошибочно помечала несколько пакетов Manticore, включая manticore-galera, manticore-executor и manticore-columnar-lib, для удаления. Это происходило из-за того, что dpkg ошибочно считал виртуальный пакет manticore-extra избыточным. Внесены изменения, чтобы unattended-upgrades больше не пыталась удалять важные компоненты Manticore.

Version 6.3.6

Выпущено: 2 августа 2024

Версия 6.3.6 продолжает серию 6.3 и включает только исправления ошибок.

Исправления ошибок

  • Issue #2477 Исправлен сбой, введённый в версии 6.3.4, который мог возникать при работе с выражениями и распределёнными или множественными таблицами.
  • Issue #2352 Исправлен сбой демона или внутренняя ошибка при преждевременном выходе, вызванном max_query_time при запросах к нескольким индексам.

Version 6.3.4

Выпущено: 31 июля 2024

Версия 6.3.4 продолжает серию 6.3 и включает только незначительные улучшения и исправления ошибок.

Незначительные изменения

  • Issue #1130 Добавлена поддержка DBeaver.
  • Issue #2146 Улучшено экранирование разделителей в формах слов и исключениях.
  • Issue #2315 Добавлены операторы сравнения строк в выражения списка SELECT.
  • Issue #2363 Добавлена поддержка null-значений в пакетных запросах, похожих на Elastic.
  • Issue #2374 Добавлена поддержка mysqldump версии 9.
  • Issue #2375 Улучшена обработка ошибок в HTTP JSON-запросах с JSON-путём к узлу, где возникает ошибка.

Исправления ошибок

  • Issue #2280 Исправлено снижение производительности в запросах с подстановочными знаками при большом количестве совпадений, когда disk_chunks > 1.
  • Issue #2332 Исправлен сбой в выражениях списка SELECT с MVA MIN или MAX для пустых массивов MVA.
  • Issue #2339 Исправлена некорректная обработка бесконечного диапазона запроса Kibana.
  • Issue #2342 Исправлен фильтр соединения по колонковым атрибутам из правой таблицы, когда атрибут отсутствует в списке SELECT.
  • Issue #2343 Исправлено дублирование спецификатора 'static' в Manticore 6.3.2.
  • Issue #2344 Исправлен LEFT JOIN, возвращающий несовпадающие записи при использовании MATCH() по правой таблице.
  • Issue #2350 Исправлено сохранение дискового чанка в RT индексе с hitless_words.
  • Issue #2364 Свойство 'aggs_node_sort' теперь можно добавлять в любом порядке среди других свойств.
  • Issue #2368 Исправлена ошибка порядка full-text и фильтра в JSON-запросе.
  • Issue #2376 Исправлена ошибка, связанная с некорректным JSON-ответом для длинных UTF-8 запросов.
  • Issue #2684 Исправлен расчёт выражений presort/prefilter, зависящих от присоединённых атрибутов.
  • Issue #301 Изменён метод вычисления размера данных для метрик — теперь читается из файла manticore.json вместо проверки общего размера каталога данных.
  • Issue #302 Добавлена обработка запросов валидации от Vector.dev.

Версия 6.3.2

Выпущена: 26 июня 2024

Версия 6.3.2 продолжает серию 6.3 и включает несколько исправлений ошибок, некоторые из которых были обнаружены после выпуска 6.3.0.

Ломающие изменения

  • ⚠️Issue #2305 Обновлены значения aggs.range для числового формата.

Исправления ошибок

  • Commit c51c Исправлена группировка по сохранённой проверке против слияния rset.
  • Commit 0e85 Исправлен сбой демона при запросах с подстановочными знаками в RT индексе с использованием словаря CRC и включённым local_df.
  • Issue #2200 Исправлен сбой в JOIN на count(*) без GROUP BY.
  • Issue #2201 Исправлено отсутствие предупреждения в JOIN при попытке группировки по полнотекстовому полю.
  • Issue #2230 Исправлена проблема, когда добавление атрибута через ALTER TABLE не учитывало опции KNN.
  • Issue #2231 Исправлен сбой при удалении пакета manticore-tools Redhat в версии 6.3.0.
  • Issue #2242 Исправлены проблемы с JOIN и несколькими операторами FACET, возвращающими некорректные результаты.
  • Issue #2250 Исправлена ошибка ALTER TABLE, возникающая если таблица находится в кластере.
  • Issue #2252 Исправлена передача исходного запроса в buddy из интерфейса SphinxQL.
  • Issue #2267 Улучшено расширение подстановочных знаков в CALL KEYWORDS для RT индекса с дисковыми чанками.
  • Issue #271 Исправлено зависание при некорректных запросах /cli.
  • Issue #274 Решены проблемы с зависанием при одновременных запросах к Manticore.
  • Issue #275 Исправлено зависание при выполнении drop table if exists t; create table t через /cli.

Связанные с репликацией

  • Issue #2270 Добавлена поддержка формата cluster:name в HTTP-эндпоинте /_bulk.

Версия 6.3.0

Выпущена: 23 мая 2024

Основные изменения

  • Issue #839 Реализован тип данных float_vector; реализован поиск по векторам.
  • Issue #1673 INNER/LEFT JOIN (бета-версия).
  • Issue #1744 Реализовано автоматическое определение форматов даты для полей timestamp.
  • Issue #1720 Лицензия Manticore Search изменена с GPLv2-or-later на GPLv3-or-later.
  • Commit 7a55 Запуск Manticore в Windows теперь требует Docker для запуска Buddy.
  • Issue #1541 Добавлен полнотекстовый оператор REGEX.
  • Issue #2091 Поддержка Ubuntu Noble 24.04.
  • Commit 514d Переработка операций с временем для повышения производительности и новые функции даты/времени:
    • CURDATE() - Возвращает текущую дату в локальном часовом поясе
    • QUARTER() - Возвращает целочисленный квартал года из аргумента timestamp
    • DAYNAME() - Возвращает название дня недели для заданного аргумента timestamp
    • MONTHNAME() - Возвращает название месяца для заданного аргумента timestamp
    • DAYOFWEEK() - Возвращает целочисленный индекс дня недели для заданного аргумента timestamp
    • DAYOFYEAR() - Возвращает целочисленный день года для заданного аргумента timestamp
    • YEARWEEK() - Возвращает целочисленный год и код дня первого дня текущей недели для заданного аргумента timestamp
    • DATEDIFF() - Возвращает количество дней между двумя заданными timestamp
    • DATE() - Форматирует часть даты из аргумента timestamp
    • TIME() - Форматирует часть времени из аргумента timestamp
    • timezone - Часовой пояс, используемый функциями, связанными с датой/временем.
  • Commit 30e7 Добавлены агрегаты range, histogram, date_range и date_histogram в HTTP-интерфейс и аналогичные выражения в SQL.

Незначительные изменения

  • Issue #1285 Поддержка версий Filebeat 8.10 - 8.11.
  • Issue #1771 ALTER TABLE ... type='distributed'.
  • Issue #1788 Добавлена возможность копирования таблиц с помощью SQL-запроса CREATE TABLE ... LIKE ... WITH DATA.
  • Issue #2072 Оптимизация алгоритма компактирования таблиц: Ранее как ручной процесс OPTIMIZE, так и автоматический auto_optimize сначала объединяли чанки, чтобы не превышать лимит, а затем удаляли удалённые документы из всех других чанков с удалёнными документами. Этот подход иногда был слишком ресурсоёмким и был отключён. Теперь объединение чанков происходит только согласно настройке progressive_merge. Однако чанки с большим количеством удалённых документов с большей вероятностью будут объединены.
  • Commit ce6c Добавлена защита от загрузки вторичного индекса более новой версии.
  • Issue #1417 Частичная замена через REPLACE INTO ... SET.
  • Commit 7c16 Обновлены размеры буферов слияния по умолчанию: .spa (скалярные атрибуты): 256КБ -> 8МБ; .spb (blob-атрибуты): 256КБ -> 8МБ; .spc (колоночные атрибуты): 1МБ, без изменений; .spds (docstore): 256КБ -> 8МБ; .spidx (вторичные индексы): буфер 256КБ -> лимит памяти 128МБ; .spi (словарь): 256КБ -> 16МБ; .spd (doclists): 8МБ, без изменений; .spp (hitlists): 8МБ, без изменений; .spe (skiplists): 256КБ -> 8МБ.
  • Issue #1859 Добавлена композитная агрегация через JSON.
  • Commit 216b Отключён PCRE.JIT из-за проблем с некоторыми регулярными выражениями и отсутствия значительного прироста скорости.
  • Commit 55cd Добавлена поддержка vanilla Galera v.3 (api v25) (libgalera_smm.so из MySQL 5.x).
  • Commit 86f9 Изменён суффикс метрики с _rate на _rps.
  • Commit c0c1 Улучшена документация по поддержке HA балансировщика.
  • Коммит d1d2 Изменено index на table в сообщениях об ошибках; исправлено сообщение об ошибке парсера bison.
  • Коммит fd26 Поддержка manticore.tbl в качестве имени таблицы.
  • Задача #1105 Поддержка запуска индексатора через systemd (документация). ❤️ Спасибо, @subnix за PR.
  • Задача #1294 Поддержка вторичных индексов в GEODIST().
  • Задача #1394 Упрощён SHOW THREADS.
  • Задача #1424 Добавлена поддержка значений по умолчанию (agent_connect_timeout и agent_query_timeout) для оператора create distributed table.
  • Задача #1442 Добавлена опция поискового запроса expansion_limit, которая переопределяет searchd.expansion_limit.
  • Задача #1448 Реализован ALTER TABLE для преобразования int->bigint.
  • Задача #1456 Метаданные в ответе MySQL.
  • Задача #1494 SHOW VERSION.
  • Задача #1582 Поддержка удаления документов по массиву id через JSON.
  • Задача #1589 Улучшено сообщение об ошибке "unsupported value type".
  • Задача #1634 Добавлена версия Buddy в SHOW STATUS.
  • Задача #1641 Оптимизация запросов сопоставления в случае отсутствия документов для ключевого слова.
  • Задача #1712 Добавлено преобразование в булев атрибут из строковых значений "true" и "false" при отправке данных.
  • Задача #1713 Добавлена таблица и опция searchd access_dict.
  • Задача #1767 Добавлены новые опции: expansion_merge_threshold_docs и expansion_merge_threshold_hits в секцию searchd конфигурации; сделан порог слияния мелких терминов расширенных терминов настраиваемым.
  • Задача #1768 Добавлено отображение времени последней команды в @@system.sessions.
  • Задача #1806 Обновлён протокол Buddy до версии 2.
  • Задача #1810 Реализованы дополнительные форматы запросов к эндпоинту /sql для упрощения интеграции с библиотеками.
  • Задача #1825 Добавлен раздел Информация в SHOW BUDDY PLUGINS.
  • Задача #1837 Улучшено потребление памяти в CALL PQ с большими пакетами.
  • Задача #1853 Переключение компилятора с Clang 15 на Clang 16.
  • Задача #1857 Добавлено сравнение строк. ❤️ Спасибо, @etcd за PR.
  • Задача #1915 Добавлена поддержка объединённых сохранённых полей.
  • Задача #1937 Логирование хоста:порта клиента в query-log.
  • Задача #1981 Исправлена неверная ошибка.
  • Задача #1983 Введена поддержка уровней подробности для плана запроса через JSON.
  • Задача #2010 Отключено логирование запросов от Buddy, если не установлен log_level=debug.
  • Задача #2035 Поддержка Linux Mint 21.3.
  • Задача #2056 Manticore не мог быть собран с Mysql 8.3+.
  • Задача #2112 Команда DEBUG DEDUP для чанков таблиц реального времени, которые могут содержать дубликаты после присоединения plain table с дубликатами.
  • Задача #212 Добавлено время в SHOW QUERIES.
  • Задача #218 Обработка колонки @timestamp как timestamp.
  • Задача #252 Реализована логика включения/отключения плагинов buddy.
  • Задача #254 Обновлён composer до более свежей версии с исправленными недавними CVE.
  • Issue #340 Небольшая оптимизация в системном юните Manticore, связанная с RuntimeDirectory.
  • Issue #51 Добавлена поддержка rdkafka и обновление до PHP 8.3.3.
  • Issue #527 Поддержка присоединения RT-таблицы. Новая команда ALTER TABLE ... RENAME.

Ломающее изменения и устаревания

  • ⚠️Issue #1436 Исправлена ошибка расчёта IDF. local_df теперь по умолчанию. Улучшен протокол поиска master-agent (обновлена версия). Если вы запускаете Manticore Search в распределённой среде с несколькими инстансами, сначала обновите агенты, затем мастера.
  • ⚠️Issue #1572 Добавлена репликация распределённых таблиц и обновлён протокол репликации. Если у вас кластер репликации, необходимо:
    • Сначала корректно остановить все узлы
    • Затем запустить последний остановленный узел с --new-cluster, используя инструмент manticore_new_cluster в Linux.
    • Подробнее о перезапуске кластера.
  • ⚠️Issue #1763 Алиасы HTTP API эндпоинтов /json/* устарели.
  • ⚠️Issue #1982 Изменено profile на plan в JSON, добавлено профилирование запросов для JSON.
  • ⚠️Commit e235 manticore-backup больше не бэкапит plugin_dir.
  • ⚠️Issue #171 Buddy мигрировал на Swoole для улучшения производительности и стабильности. При переходе на новую версию убедитесь, что все пакеты Manticore обновлены.
  • ⚠️Issue #196 Все основные плагины объединены в Buddy, изменена основная логика.
  • ⚠️Issue #2107 В ответах /search идентификаторы документов теперь обрабатываются как числа.
  • ⚠️Issue #38 Добавлен Swoole, отключён ZTS, удалено расширение parallel.
  • ⚠️Issue #1929 Переопределение в charset_table не работало в некоторых случаях.

Изменения, связанные с репликацией

  • Commit 3376 Исправлена ошибка репликации при SST больших файлов.
  • Commit 6d36 Добавлен механизм повторных попыток для команд репликации; исправлен сбой присоединения репликации в условиях загруженной сети с потерей пакетов.
  • Commit 842e Сообщение FATAL в репликации изменено на WARNING.
  • Commit 8c32 Исправлен расчёт gcache.page_size для репликационных кластеров без таблиц или с пустыми таблицами; также исправлено сохранение и загрузка опций Galera.
  • Commit a2af Добавлена возможность пропускать команду репликации обновления узлов на узле, который присоединяется к кластеру.
  • Commit c054 Исправлена взаимная блокировка при репликации при обновлении blob-атрибутов и замене документов.
  • Commit e80d Добавлены опции конфигурации searchd replication_connect_timeout, replication_query_timeout, replication_retry_delay, replication_retry_count для управления сетью во время репликации, аналогично searchd.agent_*, но с другими значениями по умолчанию.
  • Issue #1356 Исправлен повтор попыток узлов репликации после пропуска некоторых узлов и ошибки разрешения имён этих узлов.
  • Issue #1445 Исправлен уровень подробности логов репликации в show variables.
  • Issue #1482 Исправлена проблема репликации для узла-присоединителя, подключающегося к кластеру после перезапуска пода в Kubernetes.
  • Issue #1962 Исправлено долгое ожидание репликации ALTER на пустом кластере с некорректным именем узла.

Исправления ошибок

  • Commit 8a48 Исправлена очистка неиспользуемых совпадений в count distinct, которая могла вызывать сбой.
  • Issue #1569 Бинарный лог теперь записывается с гранулярностью транзакций.
  • Issue #2089 Исправлена ошибка, связанная с 64-битными ID, которая могла приводить к ошибке "Malformed packet" при вставке через MySQL, что приводило к повреждению таблиц и дублированию ID.
  • Issue #2160 Исправлена вставка дат, которые воспринимались как находящиеся в UTC вместо локального часового пояса.
  • Issue #2177 Исправлен сбой, возникавший при выполнении поиска в таблице реального времени с непустым index_token_filter.
  • Issue #2209 Изменена фильтрация дубликатов в колонковом хранилище RT для исправления сбоев и неправильных результатов запросов.
  • Commit 001d Исправлен html stripper, который повреждал память после обработки объединённого поля.
  • Commit 00eb Избежано перемотки потока после flush для предотвращения проблем с коммуникацией с mysqldump.
  • Commit 0553 Не ждать завершения preread, если он не был запущен.
  • Commit 055a Исправлена большая строка вывода Buddy для разделения на несколько строк в логе searchd.
  • Commit 0a88 Перемещено предупреждение интерфейса MySQL о неудаче установки уровня подробности заголовка debugv.
  • Commit 150a Исправлена гонка при управлении несколькими кластерами; запрещено создавать несколько кластеров с одинаковым именем или путем.
  • Commit 2e40 Исправлен неявный cutoff в полнотекстовых запросах; разделён MatchExtended на шаблонную часть D.
  • Commit 75f5 Исправлено несоответствие index_exact_words между индексированием и загрузкой таблицы в демон.
  • Commit 7643 Исправлено отсутствие сообщения об ошибке при удалении недопустимого кластера.
  • Commit 7a03 Исправлено объединение CBO с очередью; исправлен CBO с псевдо-шардингом RT.
  • Commit 7b4e При запуске без библиотеки вторичного индекса (SI) и параметров в конфигурации выдавалось вводящее в заблуждение предупреждение 'WARNING: secondary_indexes set but failed to initialize secondary library'.
  • Commit 8496 Исправлена сортировка хитов в кворуме.
  • Commit 8973 Исправлена проблема с опциями в верхнем регистре в плагине ModifyTable.
  • Commit 9935 Исправлено восстановление из дампа с пустыми значениями json (представленными как NULL).
  • Commit a28f Исправлен таймаут SST на узле joiner при получении SST с использованием pcon.
  • Commit b5a5 Исправлен сбой при выборе строкового атрибута с псевдонимом.
  • Commit c556 Добавлено преобразование запроса терма в =term полнотекстового запроса с полем morphology_skip_fields.
  • Commit cdc3 Добавлен отсутствующий ключ конфигурации (skiplist_cache_size).
  • Commit cf6e Исправлен сбой в ранжировщике выражений при большом сложном запросе.
  • Commit e513 Исправлен полнотекстовый CBO против неверных подсказок индекса.
  • Commit eb05 Прерван preread при завершении для ускорения выключения.
  • Commit f945 Изменён расчёт стека для полнотекстовых запросов, чтобы избежать сбоя при сложном запросе.
  • Issue #1262 Исправлен сбой индексатора при индексировании SQL-источника с несколькими столбцами с одинаковым именем.
  • Issue #1273 Возвращать 0 вместо для несуществующих sysvars.
  • Issue #1289 Исправлена ошибка indextool при проверке внешних файлов таблицы RT.
  • Issue #1335 Исправлена ошибка разбора запроса из-за многословной формы внутри фразы.
  • Issue #1364 Добавлено воспроизведение пустых binlog файлов со старыми версиями binlog.
  • Issue #1365 Исправлено удаление последнего пустого binlog файла.
  • Issue #1372 Исправлены некорректные относительные пути (преобразованные в абсолютные из каталога запуска демона) после изменений в data_dir, влияющих на текущий рабочий каталог при запуске демона.
  • Issue #1393 Самое медленное ухудшение времени в hn_small: получение/кэширование информации о процессоре при запуске демона.
  • Issue #1395 Исправлено предупреждение о пропущенном внешнем файле при загрузке индекса.
  • Issue #1402 Исправлен сбой в глобальных группировщиках при освобождении атрибутов указателя данных.
  • Issue #1403 _ADDITIONAL_SEARCHD_PARAMS не работает.
  • Issue #1427 Исправлено замещение параметра agent_query_timeout для каждой таблицы значением по умолчанию.
  • Issue #1444 Исправлен сбой в группировщике и ранжировщике при использовании packedfactors() с несколькими значениями на совпадение.
  • Issue #1458 Manticore аварийно завершает работу при частых обновлениях индекса.
  • Issue #1481 Исправлен сбой при очистке разобранного запроса после ошибки парсинга.
  • Issue #1484 Исправлена маршрутизация HTTP JSON запросов к buddy.
  • Issue #1499 Корень JSON атрибута не мог быть массивом. Исправлено.
  • Issue #1507 Исправлен сбой при воссоздании таблицы в рамках транзакции.
  • Issue #1515 Исправлено расширение коротких форм русских лемм.
  • Issue #1579 Исправлено использование JSON и STRING атрибутов в выражении [date_format](Functions/Date_and_time_functions.md#DATE_FORMAT()).
  • Issue #1580 Исправлен группировщик для нескольких псевдонимов JSON полей.
  • Issue #1594 Неверный total_related в dev: исправлено неявное обрезание по сравнению с лимитом; добавлено лучшее обнаружение полного сканирования в JSON запросах.
  • Issue #1603 Исправлено использование JSON и STRING атрибутов во всех выражениях даты.
  • Issue #1609 сбой при использовании LEVENSHTEIN().
  • Issue #1612 Исправлено повреждение памяти после ошибки парсинга поискового запроса с подсветкой.
  • Issue #1614 Отключено расширение подстановочных знаков для терминов короче min_prefix_len / min_infix_len.
  • Issue #1617 Изменено поведение: не логировать ошибку, если Buddy успешно обрабатывает запрос.
  • Issue #1635 Исправлен total в метаданных поискового запроса для запросов с установленным лимитом.
  • Issue #1640 Невозможно использовать таблицу с заглавными буквами через JSON в plain режиме.
  • Issue #1643 Добавлено значение по умолчанию для SPH_EXTNODE_STACK_SIZE.
  • Issue #1646 Исправлен лог SphinxQL для отрицательного фильтра с ALL/ANY на MVA атрибуте.
  • Issue #1660 Исправлено применение списков удаления docid из других индексов. ❤️ Спасибо, @raxoft за PR.
  • Issue #1668 Исправлены пропущенные совпадения из-за преждевременного выхода при полном сканировании сырого индекса (без итераторов индексов); удалено обрезание из plain row итератора.
  • Issue #1671 Исправлена ошибка FACET при запросе распределённой таблицы с агентом и локальными таблицами.
  • Issue #1690 Исправлен сбой при оценке гистограммы для больших значений.
  • Issue #1692 сбой при alter table tbl add column col uint.
  • Issue #1710 Пустой результат для условия WHERE json.array IN (<value>).
  • Issue #172 Исправлена проблема с TableFormatter при отправке запроса на /cli.
  • Issue #1742 CREATE TABLE не завершался с ошибкой при отсутствии файла wordforms.
  • Issue #1762 Порядок атрибутов в RT таблицах теперь соответствует порядку в конфигурации.
  • Issue #1765 HTTP bool запрос с условием 'should' возвращает некорректные результаты.
  • Issue #1769 Сортировка по строковым атрибутам не работает с SPH_SORT_ATTR_DESC и SPH_SORT_ATTR_ASC.
  • Issue #177 Отключён HTTP заголовок Expect: 100-continue для curl запросов к Buddy.
  • Issue #1791 сбой вызванный псевдонимом GROUP BY.
  • Issue #1792 SQL meta summary показывает неправильное время в Windows.
  • Issue #1794 Исправлено падение производительности при однотерминных запросах с JSON.
  • Issue #1798 Несовместимые фильтры не вызывали ошибку на /search.
  • Issue #1802 Исправлены операции ALTER CLUSTER ADD и JOIN CLUSTER для ожидания друг друга, предотвращая состояние гонки, когда ALTER добавляет таблицу в кластер, в то время как донор отправляет таблицы на узел присоединения.
  • Issue #1811 Некорректная обработка запросов /pq/{table}/*.
  • Issue #1816 UNFREEZE не работал в некоторых случаях.
  • Issue #183 Исправлена проблема с восстановлением MVA в некоторых случаях.
  • Issue #1849 Исправлен сбой indextool при завершении работы, если используется с MCL.
  • Issue #1866 Исправлено ненужное декодирование URL для запросов /cli_json.
  • Issue #1872 Изменена логика установки plugin_dir при запуске демона.
  • Issue #1874 Ошибка при выполнении alter table ... exceptions.
  • Issue #1891 Manticore аварийно завершался с signal 11 при вставке данных.
  • Issue #1920 Снижено ограничение для low_priority.
  • Issue #1924 Ошибка при mysqldump + mysql restore.
  • Issue #1951 Исправлено некорректное создание распределённой таблицы в случае отсутствия локальной таблицы или неправильного описания агента; теперь возвращается сообщение об ошибке.
  • Issue #1972 Реализован счётчик FREEZE для избежания проблем с freeze/unfreeze.
  • Issue #1980 Соблюдение таймаута запроса в OR-узлах. Ранее max_query_time мог не работать в некоторых случаях.
  • Issue #1986 Не удалось переименовать new в current [manticore.json].
  • Issue #1988 Полнотекстовый запрос мог игнорировать подсказку CBO SecondaryIndex.
  • Issue #1990 Исправлен expansion_limit для среза итогового набора результатов для ключевых слов вызова из нескольких дисковых или RAM чанков.
  • Issue #1994 Неправильные внешние файлы.
  • Issue #2021 Несколько процессов manticore-executor могли оставаться запущенными после остановки Manticore.
  • Issue #2029 Сбой при использовании расстояния Левенштейна.
  • Issue #2037 Ошибка после многократного запуска max оператора на пустом индексе.
  • Issue #2052 Сбой при мульти-группировке с JSON.field.
  • Issue #2067 Manticore аварийно завершался при некорректном запросе к _update.
  • Issue #2069 Исправлена проблема с компараторами строковых фильтров для закрытых диапазонов в JSON интерфейсе.
  • Issue #2082 alter не работал, если путь data_dir находился на символической ссылке.
  • Issue #2102 Улучшена специальная обработка SELECT запросов в mysqldump для обеспечения совместимости итоговых INSERT операторов с Manticore.
  • Issue #2103 Тайские символы были в неправильных кодировках.
  • Issue #2124 Сбой при использовании SQL с зарезервированным словом.
  • Issue #2154 Таблицы с wordforms не могли быть импортированы.
  • Issue #2176 Исправлен сбой, возникавший при установке параметра engine в 'columnar' и добавлении дубликатов ID через JSON.
  • Issue #223 Корректное сообщение об ошибке при попытке вставить документ без схемы и без имён столбцов.
  • Issue #239 Автоматическая схема для многострочной вставки могла не работать.
  • Issue #399 Добавлено сообщение об ошибке при индексации, если атрибут id объявлен в источнике данных.
  • Issue #59 Сбой кластера Manticore.
  • Issue #68 optimize.php аварийно завершался, если присутствовала таблица percolate.
  • Issue #77 Исправлены ошибки при развертывании в Kubernetes.
  • Issue #274 Исправлена некорректная обработка одновременных запросов к Buddy

Связано с manticore-backup

  • Issue #97 Установлен VIP HTTP порт по умолчанию, если доступен. Различные улучшения: улучшена проверка версий и потоковая декомпрессия ZSTD; добавлены запросы пользователю при несоответствии версий во время восстановления; исправлено некорректное поведение запросов для разных версий при восстановлении; улучшена логика декомпрессии для чтения непосредственно из потока, а не в рабочую память; добавлен флаг --force
  • Commit 3b35 Добавлено отображение версии резервной копии после запуска Manticore search для выявления проблем на этом этапе.
  • Commit ad2e Обновлено сообщение об ошибке при неудачном подключении к демону.
  • Commit ce5e Исправлена проблема с преобразованием абсолютных корневых путей резервной копии в относительные и удалена проверка на возможность записи при восстановлении для обеспечения восстановления из разных путей.
  • Commit db7e Добавлена сортировка итератора файлов для обеспечения согласованности в различных ситуациях.
  • Issue #106 Резервное копирование и восстановление нескольких конфигураций.
  • Issue #91 Добавлен defattr для предотвращения необычных прав пользователя в файлах после установки на RHEL.
  • Issue #91 Добавлен дополнительный chown для обеспечения установки файлов по умолчанию пользователем root в Ubuntu.

Связано с MCL (колоночные, вторичные, knn библиотеки)

  • Commit f104 Поддержка векторного поиска.
  • Commit 2169 Исправлена очистка временных файлов при прерванной настройке построения вторичного индекса. Это решает проблему, когда демон превышал лимит открытых файлов при создании файлов tmp.spidx.
  • Commit 709b Использование отдельной библиотеки streamvbyte для колоночных и SI.
  • Commit 1c26 Добавлено предупреждение, что колоночное хранилище не поддерживает json атрибуты.
  • Commit 3acd Исправлена распаковка данных в SI.
  • Commit 574c Исправлен сбой при сохранении дискового чанка с смешанным построчным и колоночным хранением.
  • Commit e87f Исправлен итератор SI, который указывал на уже обработанный блок.
  • Issue #1474 Обновление не работает для построчной MVA колонки с колоночным движком.
  • Issue #1510 Исправлен сбой при агрегации по колоночному атрибуту, используемому в HAVING.
  • Issue #1519 Исправлен сбой в ранжировщике expr при использовании колоночного атрибута.

Связано с Docker

  • Issue #42 Поддержка plain indexation через переменные окружения.
  • Issue #47 Повышена гибкость конфигурации через переменные окружения.
  • Issue #54 Улучшены процессы резервного копирования и восстановления для Docker.
  • Issue #77 Улучшен entrypoint для обработки восстановления резервной копии только при первом запуске.
  • Commit a27c Исправлен вывод логов запросов в stdout.
  • Issue #38 Отключение предупреждений BUDDY, если EXTRA не установлен.
  • Issue #71 Исправлено имя хоста в manticore.conf.sh.

Версия 6.2.12

Выпущена: 23 августа 2023

Версия 6.2.12 продолжает серию 6.2 и устраняет проблемы, обнаруженные после выпуска 6.2.0.

Исправления ошибок

  • Issue #1351 "Manticore 6.2.0 не запускается через systemctl на Centos 7": Изменено значение TimeoutStartSec с infinity на 0 для лучшей совместимости с Centos 7.
  • Issue #1364 "Сбой после обновления с 6.0.4 до 6.2.0": Добавлена функция воспроизведения для пустых binlog файлов из старых версий binlog.
  • PR #1334 "исправление опечатки в searchdreplication.cpp": Исправлена опечатка в searchdreplication.cpp: beggining -> beginning.
  • Issue #1337 "Manticore 6.2.0 WARNING: conn (local)(12), sock=8088: bailing on failed MySQL header, AsyncNetInputBuffer_c::AppendData: error 11 (Resource temporarily unavailable) return -1": Понижен уровень подробности предупреждения интерфейса MySQL о заголовке до logdebugv.
  • Issue #1355 "join cluster зависает, когда node_address не может быть разрешен": Улучшена повторная попытка репликации, когда некоторые узлы недоступны и их разрешение имен не удается. Это должно решить проблемы в Kubernetes и Docker узлах, связанные с репликацией. Улучшено сообщение об ошибке при сбоях запуска репликации и внесены обновления в тестовую модель 376. Кроме того, добавлено четкое сообщение об ошибке при сбоях разрешения имен.
  • Issue #1361 "No lower case mapping for "Ø" in charset non_cjk": Скорректировано отображение для символа 'Ø'.
  • Issue #1365 "searchd leaves binlog.meta and binlog.001 after clean stop": Обеспечено правильное удаление последнего пустого файла binlog.
  • Commit 0871: Исправлена проблема сборки Thd_t на Windows, связанная с ограничениями атомарного копирования.
  • Commit 1cc0: Решена проблема с FT CBO против ColumnarScan.
  • Commit c6bf: Внесены исправления в тест 376 и добавлена замена для ошибки AF_INET в тесте.
  • Commit cbc3: Решена проблема взаимной блокировки при репликации при обновлении атрибутов blob и замене документов. Также удалена блокировка rlock индекса во время коммита, так как он уже заблокирован на более базовом уровне.

Незначительные изменения

  • Commit 4f91 Обновлена информация по эндпоинтам /bulk в руководстве.

MCL

Версия 6.2.0

Выпущено: 4 августа 2023

Основные изменения

  • Оптимизатор запросов был улучшен для поддержки полнотекстовых запросов, что значительно повысило эффективность и производительность поиска.
  • Интеграции с:
  • Мы начали использовать GitHub workflows, что упрощает для участников использование того же процесса непрерывной интеграции (CI), который применяет основная команда при подготовке пакетов. Все задачи могут выполняться на хостах GitHub, что облегчает беспрепятственное тестирование изменений в вашем форке Manticore Search.
  • Мы начали использовать CLT для тестирования сложных сценариев. Например, теперь мы можем гарантировать, что пакет, собранный после коммита, может быть корректно установлен на всех поддерживаемых дистрибутивах Linux. Command Line Tester (CLT) предоставляет удобный способ записи тестов в интерактивном режиме и их легкого воспроизведения.
  • Значительное улучшение производительности операции count distinct за счет использования комбинации хеш-таблиц и HyperLogLog.
  • Включено многопоточное выполнение запросов, содержащих вторичные индексы, с ограничением количества потоков числом физических ядер CPU. Это должно значительно повысить скорость выполнения запросов.
  • pseudo_sharding был скорректирован и теперь ограничен числом свободных потоков. Это обновление значительно улучшает пропускную способность.
  • Пользователи теперь могут указывать движок хранения атрибутов по умолчанию через настройки конфигурации, что обеспечивает лучшую настройку под конкретные требования нагрузки.
  • Поддержка Manticore Columnar Library 2.2.0 с многочисленными исправлениями ошибок и улучшениями в вторичных индексах.

Незначительные изменения

  • Buddy #153: HTTP-эндпоинт /pq теперь является псевдонимом для HTTP-эндпоинта /json/pq.
  • Commit 0bf1: Обеспечена многобайтовая совместимость для upper() и lower().
  • Commit 2bb9: Вместо сканирования индекса для запросов count(*) теперь возвращается предварительно вычисленное значение.
  • Commit 3c84: Теперь можно использовать SELECT для произвольных вычислений и отображения @@sysvars. В отличие от прежнего, теперь не ограничены одним вычислением. Поэтому запросы типа select user(), database(), @@version_comment, version(), 1+1 as a limit 10 вернут все столбцы. Обратите внимание, что опциональный 'limit' всегда игнорируется.
  • Commit 6aca: Реализован заглушечный запрос CREATE DATABASE.
  • Commit 9dc1: При выполнении ALTER TABLE table REBUILD SECONDARY вторичные индексы теперь всегда перестраиваются, даже если атрибуты не обновлялись.
  • Commit 46ed: Сортировщики, использующие предварительно вычисленные данные, теперь определяются до применения CBO, чтобы избежать ненужных вычислений CBO.
  • Commit 102a: Реализовано мокирование и использование стека полнотекстовых выражений для предотвращения сбоев демона.
  • Commit 979f: Добавлен быстрый путь кода для клонирования совпадений, которые не используют строковые/mvas/json атрибуты.
  • Коммит a073: Добавлена поддержка команды SELECT DATABASE(). Однако она всегда будет возвращать Manticore. Это дополнение важно для интеграций с различными инструментами MySQL.
  • Коммит bc04: Изменён формат ответа эндпоинта /cli, добавлен эндпоинт /cli_json, который функционирует как предыдущий /cli.
  • Коммит d70b: thread_stack теперь можно изменять во время выполнения с помощью оператора SET. Доступны как сессионные, так и глобальные варианты. Текущие значения можно посмотреть в выводе show variables.
  • Коммит d96e: В код CBO интегрированы улучшения для более точной оценки сложности выполнения фильтров по строковым атрибутам.
  • Коммит e77d: Улучшен расчёт стоимости DocidIndex, что повысило общую производительность.
  • Коммит f3ae: Метрики нагрузки, аналогичные 'uptime' в Linux, теперь видны в команде SHOW STATUS.
  • Коммит f3cc: Порядок полей и атрибутов для DESC и SHOW CREATE TABLE теперь совпадает с порядком в SELECT * FROM.
  • Коммит f3d2: Разные внутренние парсеры теперь при различных ошибках предоставляют свой внутренний мнемонический код (например, P01). Это помогает определить, какой парсер вызвал ошибку, и скрывает несущественные внутренние детали.
  • Issue #271 "Иногда CALL SUGGEST не предлагает исправление опечатки из одной буквы": Улучшено поведение SUGGEST/QSUGGEST для коротких слов: добавлена опция sentence для отображения всего предложения.
  • Issue #696 "Percolate индекс не ищет корректно точную фразу при включённом стемминге": Запрос percolate изменён для поддержки модификатора точного термина, улучшая функциональность поиска.
  • Issue #829 "Методы форматирования даты": добавлено выражение списка выбора [date_format()](Functions/Date_and_time_functions.md#DATE_FORMAT()), которое раскрывает функцию strftime().
  • Issue #961 "Сортировка бакетов через HTTP JSON API": введено необязательное свойство sort для каждого бакета агрегатов в HTTP интерфейсе.
  • Issue #1062 "Улучшить логирование ошибок JSON insert api failure - "unsupported value type"": Эндпоинт /bulk теперь сообщает информацию о количестве обработанных и необработанных строк (документов) в случае ошибки.
  • Issue #1070 "CBO hints не поддерживают несколько атрибутов": Включена поддержка подсказок индекса для нескольких атрибутов.
  • Issue #1106 "Добавить теги к HTTP поисковому запросу": Теги добавлены в HTTP PQ ответы.
  • Issue #1301 "buddy не должен создавать таблицу параллельно": Исправлена проблема, вызывавшая сбои при параллельных операциях CREATE TABLE. Теперь одновременно может выполняться только одна операция CREATE TABLE.
  • Issue #1303 "Добавить поддержку @ в именах столбцов".
  • Issue #1316 "Запросы к набору данных такси медленные при ps=1": Логика CBO уточнена, а разрешение гистограммы по умолчанию установлено в 8k для лучшей точности по атрибутам с случайно распределёнными значениями.
  • Issue #1317 "Исправить CBO против полнотекстового поиска на hn dataset": Реализована улучшенная логика для определения, когда использовать пересечение итераторов bitmap, а когда — очередь с приоритетом.
  • Issue #1318 "columnar: изменить интерфейс итератора на однократный вызов": Итераторы columnar теперь используют один вызов Get, заменяя прежние двухшаговые вызовы AdvanceTo + Get для получения значения.
  • Issue #1319 "Ускорение вычисления агрегатов (удалить CheckReplaceEntry?)": Вызов CheckReplaceEntry удалён из сортировщика групп для ускорения вычисления агрегатных функций.
  • Issue #1320 "create table read_buffer_docs/hits не понимает синтаксис k/m/g": Опции read_buffer_docs и read_buffer_hits в CREATE TABLE теперь поддерживают синтаксис k/m/g.
  • Языковые пакеты для английского, немецкого и русского теперь можно легко установить на Linux командой apt/yum install manticore-language-packs. На macOS используйте команду brew install manticoresoftware/tap/manticore-language-packs.
  • Порядок полей и атрибутов теперь согласован между операциями SHOW CREATE TABLE и DESC.
  • Если при выполнении запросов INSERT недостаточно места на диске, новые запросы INSERT будут завершаться с ошибкой до освобождения достаточного объёма дискового пространства.
  • Добавлена функция преобразования типа UINT64().
  • Конечная точка /bulk теперь обрабатывает пустые строки как команду commit. Подробнее здесь.
  • Реализованы предупреждения для недопустимых подсказок индекса, обеспечивающие большую прозрачность и позволяющие избежать ошибок.
  • При использовании count(*) с одним фильтром запросы теперь используют предварительно рассчитанные данные из вторичных индексов, если они доступны, что значительно ускоряет время выполнения запросов.

⚠️ Изменения, нарушающие обратную совместимость

  • ⚠️ Таблицы, созданные или изменённые в версии 6.2.0, не могут быть прочитаны более старыми версиями.
  • ⚠️ Идентификаторы документов теперь обрабатываются как беззнаковые 64-битные целые числа при индексировании и операциях INSERT.
  • ⚠️ Синтаксис подсказок оптимизатора запросов был обновлён. Новый формат — /*+ SecondaryIndex(uid) */. Обратите внимание, что старый синтаксис больше не поддерживается.
  • ⚠️ Issue #1160: Использование символа @ в именах таблиц запрещено для предотвращения конфликтов синтаксиса.
  • ⚠️ Строковые поля/атрибуты, помеченные как indexed и attribute, теперь рассматриваются как одно поле при операциях INSERT, DESC и ALTER.
  • ⚠️ Issue #1057: Библиотеки MCL больше не загружаются на системах, не поддерживающих SSE 4.2.
  • ⚠️ Issue #1143: agent_query_timeout был сломан. Исправлен и теперь работает корректно.

Исправления ошибок

  • Commit 2a6e "Crash on DROP TABLE": решена проблема, вызывавшая длительное ожидание завершения операций записи (оптимизация, сохранение дискового чанка) в RT-таблице при выполнении команды DROP TABLE. Добавлено предупреждение при непустом каталоге таблицы после выполнения DROP TABLE.
  • Commit 2ebd: Добавлена поддержка колоннарных атрибутов, отсутствовавшая в коде для группировки по нескольким атрибутам.
  • Commit 3be4 Исправлена ошибка, вызывавшая сбой при исчерпании дискового пространства, за счёт корректной обработки ошибок записи в binlog.
  • Commit 6adb: Исправлен сбой, который иногда возникал при использовании нескольких колоннарных сканирующих итераторов (или итераторов вторичного индекса) в запросе.
  • Commit 6bd9: Фильтры не удалялись при использовании сортировщиков, использующих предварительно рассчитанные данные. Исправлено.
  • Commit 6d03: Код CBO обновлён для более точных оценок запросов с фильтрами по построчным атрибутам, выполняемым в нескольких потоках.
  • Commit 6dd3, Helm #56 "fatal crash dump in Kubernetes cluster": Исправлен дефектный фильтр Блума для корневого JSON-объекта; исправлен сбой демона из-за фильтрации по JSON-полю.
  • Commit 6e1b Исправлен сбой демона, вызванный некорректным конфигом manticore.json.
  • Commit 6fbc Исправлен json range filter для поддержки значений int64.
  • Commit 9c67 Файлы .sph могли повреждаться при ALTER. Исправлено.
  • Commit 77cc: Добавлен общий ключ для репликации оператора replace, чтобы устранить ошибку pre_commit, возникавшую при репликации replace с нескольких мастер-узлов.
  • Commit 2884 Исправлены проблемы с проверками bigint в функциях типа 'date_format()'.
  • Commit 9513: Итераторы больше не отображаются в SHOW META, когда сортировщики используют предварительно рассчитанные данные.
  • Commit a2a7: Размер стека fulltext-узла обновлён для предотвращения сбоев при сложных полнотекстовых запросах.
  • Commit a062: Исправлена ошибка, вызывавшая сбой при репликации обновлений с JSON и строковыми атрибутами.
  • Commit b3e6: Строитель строк обновлён для использования 64-битных целых чисел, чтобы избежать сбоев при работе с большими объёмами данных.
  • Commit c472: Исправлен сбой, возникавший при использовании count distinct по нескольким индексам.
  • Commit d073: Исправлена проблема, при которой запросы по дисковым чанкам RT-индексов могли выполняться в нескольких потоках, даже если pseudo_sharding был отключён.
  • Commit d205 Набор значений, возвращаемых командой show index status, изменён и теперь зависит от типа используемого индекса.
  • Commit e9bc Исправлена ошибка HTTP при обработке bulk-запросов и проблема с неотправкой ошибки клиенту из сетевого цикла.
  • Commit f77c использование расширенного стека для PQ.
  • Коммит fac2 Обновлен вывод ранжировщика экспорта для соответствия packedfactors().
  • Коммит ff87: Исправлена проблема со списком строк в фильтре журнала запросов SphinxQL.
  • Проблема #589 "Определение charset, похоже, зависит от порядка кодов": Исправлено некорректное отображение charset для дубликатов.
  • Проблема #811 "Отображение нескольких слов в формах слов мешает поиску фраз с CJK пунктуацией между ключевыми словами": Исправлена позиция токена ngram в запросе фразы с формами слов.
  • Проблема #834 "Знак равенства в поисковом запросе ломает запрос": Обеспечена возможность экранирования точного символа и исправлено двойное точное расширение опцией expand_keywords.
  • Проблема #864 "конфликт exceptions/stopwords"
  • Проблема #910 "Сбой Manticore при вызове call snippets() с libstemmer_fr и index_exact_words": Решены внутренние конфликты, вызывавшие сбои при вызове SNIPPETS().
  • Проблема #946 "Дублирование записей при SELECT": Исправлена проблема дублирования документов в результирующем наборе для запроса с опцией not_terms_only_allowed к RT индексу с удалёнными документами.
  • Проблема #967 "Использование JSON аргументов в UDF функциях приводит к сбою": Исправлен сбой демона при обработке поиска с включённым псевдо-шардингом и UDF с JSON аргументом.
  • Проблема #1050 "count(*) в FEDERATED": Исправлен сбой демона при выполнении запроса через движок FEDERATED с агрегатом.
  • Проблема #1052 Исправлена проблема несовместимости колонки rt_attr_json с колоночным хранением.
  • Проблема #1072 "* удаляется из поискового запроса опцией ignore_chars": Исправлено, чтобы подстановочные знаки в запросе не затрагивались ignore_chars.
  • Проблема #1075 "indextool --check не работает, если есть распределённая таблица": indextool теперь совместим с инстансами, имеющими 'distributed' и 'template' индексы в json конфиге.
  • Проблема #1081 "Определённый select на определённом RT наборе данных приводит к сбою searchd": Исправлен сбой демона при запросе с packedfactors и большим внутренним буфером.
  • Проблема #1095 "С удалёнными документами с not_terms_only_allowed игнорируются"
  • Проблема #1099 "indextool --dumpdocids не работает": Восстановлена функциональность команды --dumpdocids.
  • Проблема #1100 "indextool --buildidf не работает": indextool теперь закрывает файл после завершения globalidf.
  • Проблема #1104 "Count(*) пытается обрабатываться как набор схем в удалённых таблицах": Исправлена проблема, при которой демон отправлял сообщение об ошибке для запросов в распределённый индекс, когда агент возвращал пустой набор результатов.
  • Проблема #1109 "FLUSH ATTRIBUTES зависает при threads=1".
  • Проблема #1126 "Потеря соединения с MySQL сервером во время запроса - manticore 6.0.5": Исправлены сбои, возникавшие при использовании нескольких фильтров по колоночным атрибутам.
  • Проблема #1135 "Чувствительность к регистру при фильтрации JSON строк": Исправлена сортировка для корректной работы фильтров в HTTP поисковых запросах.
  • Проблема #1140 "Совпадение в неправильном поле": Исправлены повреждения, связанные с morphology_skip_fields.
  • Проблема #1155 "Системные удалённые команды через API должны передавать g_iMaxPacketSize": Внесены изменения для обхода проверки max_packet_size для команд репликации между узлами. Также добавлена последняя ошибка кластера в отображение статуса.
  • Проблема #1302 "Временные файлы остаются после неудачной оптимизации": Исправлена проблема с оставлением временных файлов после ошибки во время процесса слияния или оптимизации.
  • Проблема #1304 "Добавить переменную окружения для таймаута запуска buddy": Добавлена переменная окружения MANTICORE_BUDDY_TIMEOUT (по умолчанию 3 секунды) для контроля времени ожидания сообщения buddy при запуске демона.
  • Проблема #1305 "Переполнение int при сохранении метаданных PQ": Смягчено чрезмерное потребление памяти демоном при сохранении большого PQ индекса.
  • Проблема #1306 "Невозможно воссоздать RT таблицу после изменения её внешнего файла": Исправлена ошибка alter с пустой строкой для внешних файлов; исправлены внешние файлы RT индекса, оставшиеся после изменения внешних файлов.
  • Проблема #1307 "SELECT выражение sum(value) as value работает некорректно": Исправлена проблема, когда выражение списка select с псевдонимом могло скрывать атрибут индекса; также исправлен sum на count в int64 для целых чисел.
  • Issue #1308 "Избегать привязки к localhost в репликации": Обеспечена репликация без привязки к localhost для имен хостов с несколькими IP.
  • Issue #1309 "ответ mysql клиенту не удался для данных больше 16Mb": Исправлена проблема возврата пакета SphinxQL размером более 16Mb клиенту.
  • Issue #1310 "неправильная ссылка в "пути к внешним файлам должны быть абсолютными": Исправлено отображение полного пути к внешним файлам в SHOW CREATE TABLE.
  • Issue #1311 "отладочная сборка падает на длинных строках в сниппетах": Теперь разрешены длинные строки (>255 символов) в тексте, на который направлена функция SNIPPET().
  • Issue #1312 "ложный сбой при использовании после удаления в опросе kqueue (master-agent)": Исправлены сбои, когда мастер не может подключиться к агенту на системах с kqueue (FreeBSD, MacOS и др.).
  • Issue #1313 "слишком долгое подключение к самому себе": При подключении от мастера к агентам на MacOS/BSD теперь используется единый таймаут connect+query вместо только connect.
  • Issue #1314 "pq (json meta) с недостигнутыми встроенными синонимами не загружается": Исправлен флаг встроенных синонимов в pq.
  • Issue #1315 "Разрешить некоторым функциям (sint, fibonacci, second, minute, hour, day, month, year, yearmonth, yearmonthday) использовать неявно повышенные значения аргументов".
  • Issue #1321 "Включить многопоточность SI в fullscan, но ограничить количество потоков": В CBO реализован код для лучшего прогнозирования многопоточной производительности вторичных индексов при использовании в полнотекстовом запросе.
  • Issue #1322 "запросы count(*) все еще медленные после использования precalc sorters": Итераторы больше не инициализируются при использовании сортировщиков с предрасчитанными данными, что предотвращает ухудшение производительности.
  • Issue #1411 "журнал запросов в sphinxql не сохраняет оригинальные запросы для MVA": Теперь логируются all()/any().

Version 6.0.4

Released: March 15 2023

New features

  • Улучшена интеграция с Logstash, Beats и др., включая:
    • Поддержку версий Logstash 7.6 - 7.15, Filebeat 7.7 - 7.12
    • Поддержку авто-схемы.
    • Добавлена обработка bulk-запросов в формате, похожем на Elasticsearch.
  • Buddy commit ce90 Версия Log Buddy при запуске Manticore.

Bugfixes

  • Issue #588, Issue #942 Исправлен некорректный символ в метаданных поиска и вызов keywords для биграммного индекса.
  • Issue #1027 Отклоняются HTTP-заголовки в нижнем регистре.
  • Issue #1039 Исправлена утечка памяти в демоне при чтении вывода консоли Buddy.
  • Issue #1056 Исправлено неожиданное поведение знака вопроса.
  • Issue #1064 Исправлено состояние гонки в таблицах нижнего регистра токенизатора, вызывавшее сбой.
  • Commit 59bb Исправлена обработка bulk-записей в JSON-интерфейсе для документов с id, явно установленным в null.
  • Commit 7b6b Исправлена статистика терминов в CALL KEYWORDS для нескольких одинаковых терминов.
  • Commit f381 Конфигурация по умолчанию теперь создается установщиком Windows; пути больше не подставляются во время выполнения.
  • Commit 6940, Commit cc5a Исправлены проблемы репликации для кластера с узлами в нескольких сетях.
  • Commit 4972 Исправлен HTTP-эндпоинт /pq как псевдоним для /json/pq.
  • Commit 3b53 Исправлен сбой демона при перезапуске Buddy.
  • Buddy commit fba9 Отображение оригинальной ошибки при получении некорректного запроса.
  • Buddy commit db95 Разрешены пробелы в пути резервной копии и добавлена поддержка одинарных кавычек в регулярных выражениях.

Version 6.0.2

Released: Feb 10 2023

Bugfixes

  • Issue #1024 crash 2 Сбой / Ошибка сегментации при поиске по фасетам с большим количеством результатов
  • Issue #1029 - ВНИМАНИЕ: Встроенное значение KNOWN_CREATE_SIZE (16) меньше измеренного (208). Рекомендуется исправить значение!
  • Issue #1032 - Падение plain индекса в Manticore 6.0.0
  • Issue #1033 - потеря нескольких распределенных индексов при перезапуске демона
  • Issue #1064 - состояние гонки в таблицах нижнего регистра токенизатора

Version 6.0.0

Released: Feb 7 2023

Начиная с этого релиза, Manticore Search поставляется с Manticore Buddy, сайдкар-демоном, написанным на PHP, который обрабатывает высокоуровневую функциональность, не требующую сверхнизкой задержки или высокой пропускной способности. Manticore Buddy работает за кулисами, и вы можете даже не заметить, что он запущен. Хотя он невидим для конечного пользователя, создание Manticore Buddy, который легко устанавливается и совместим с основным демоном на C++, было значительной задачей. Это крупное изменение позволит команде разрабатывать широкий спектр новых высокоуровневых функций, таких как оркестрация шардов, контроль доступа и аутентификация, а также различные интеграции, например mysqldump, DBeaver, Grafana mysql connector. На данный момент он уже обрабатывает SHOW QUERIES, BACKUP и Auto schema.

В этот релиз также включено более 130 исправлений ошибок и множество новых функций, многие из которых можно считать значительными.

Основные изменения

  • 🔬 Экспериментально: теперь вы можете выполнять совместимые с Elasticsearch insert и replace JSON-запросы, что позволяет использовать Manticore с такими инструментами, как Logstash (версия < 7.13), Filebeat и другими инструментами из семейства Beats. Включено по умолчанию. Вы можете отключить это с помощью SET GLOBAL ES_COMPAT=off.
  • Поддержка Manticore Columnar Library 2.0.0 с многочисленными исправлениями и улучшениями в вторичных индексах. ⚠️ Критическое изменение: вторичные индексы включены по умолчанию начиная с этого релиза. Убедитесь, что вы выполнили ALTER TABLE table_name REBUILD SECONDARY, если обновляетесь с Manticore 5. Подробнее ниже.
  • Коммит c436 Auto-schema: теперь можно пропустить создание таблицы, просто вставить первый документ, и Manticore автоматически создаст таблицу на основе его полей. Подробнее об этом читайте здесь. Вы можете включать/выключать эту функцию с помощью searchd.auto_schema.
  • Полная переработка оптимизатора на основе стоимости, который во многих случаях снижает время отклика запросов.
    • Issue #1008 Оценка производительности параллелизации в CBO.
    • Issue #1014 CBO теперь учитывает вторичные индексы и может работать умнее.
    • Коммит cef9 Статистика кодирования колоннарных таблиц/полей теперь хранится в метаданных, чтобы помочь CBO принимать более умные решения.
    • Коммит 2b95 Добавлены подсказки CBO для тонкой настройки его поведения.
  • Телеметрия: мы рады объявить о добавлении телеметрии в этом релизе. Эта функция позволяет собирать анонимные и деперсонализированные метрики, которые помогут нам улучшить производительность и пользовательский опыт нашего продукта. Будьте уверены, все собранные данные полностью анонимны и не будут связаны с какой-либо личной информацией. Эту функцию можно легко отключить в настройках при желании.
  • Коммит 5aaf ALTER TABLE table_name REBUILD SECONDARY для перестроения вторичных индексов в любое время, например:
  • Issue #821 Новый инструмент manticore-backup для резервного копирования и восстановления экземпляра Manticore
  • SQL-команда BACKUP для создания резервных копий изнутри Manticore.
  • SQL-команда SHOW QUERIES как простой способ увидеть выполняющиеся запросы вместо потоков.
  • Issue #551 SQL-команда KILL для прерывания долгих SELECT.
  • Динамический max_matches для агрегатных запросов для повышения точности и снижения времени отклика.

Незначительные изменения

  • Issue #822 SQL-команды FREEZE/UNFREEZE для подготовки таблицы реального времени/обычной таблицы к резервному копированию.

  • Коммит c470 Новые настройки accurate_aggregation и max_matches_increase_threshold для контролируемой точности агрегации.

  • Issue #718 Поддержка знаковых отрицательных 64-битных ID. Обратите внимание, что вы по-прежнему не можете использовать ID > 2^63, но теперь можно использовать ID в диапазоне от -2^63 до 0.

  • Поскольку мы недавно добавили поддержку вторичных индексов, возникла путаница, так как "index" мог означать вторичный индекс, полнотекстовый индекс или простой/реального времени index. Чтобы уменьшить путаницу, мы переименовываем последний в "table". Следующие команды SQL/командной строки затронуты этим изменением. Их старые версии устарели, но всё ещё работают:

    • index <table name> => table <table name>,
    • searchd -i / --index => searchd -t / --table,
    • SHOW INDEX STATUS => SHOW TABLE STATUS,
    • SHOW INDEX SETTINGS => SHOW TABLE SETTINGS,
    • FLUSH RTINDEX => FLUSH TABLE,
    • OPTIMIZE INDEX => OPTIMIZE TABLE,
    • ATTACH TABLE plain TO RTINDEX rt => ATTACH TABLE plain TO TABLE rt,
    • RELOAD INDEX => RELOAD TABLE,
    • RELOAD INDEXES => RELOAD TABLES.

    Мы не планируем делать старые формы устаревшими, но для обеспечения совместимости с документацией рекомендуем изменить имена в вашем приложении. В будущих релизах будет изменено переименование "index" в "table" в выводе различных SQL и JSON команд.

  • Запросы с состоянием UDF теперь принудительно выполняются в одном потоке.

  • Issue #1011 Рефакторинг всего, что связано с планированием времени, как предпосылка для параллельного слияния чанков.

  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Формат колоночного хранения был изменён. Необходимо перестроить те таблицы, которые имеют колоночные атрибуты.

  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Формат файла вторичных индексов был изменён, поэтому если вы используете вторичные индексы для поиска и у вас в конфигурационном файле стоит searchd.secondary_indexes = 1, будьте внимательны: новая версия Manticore пропустит загрузку таблиц с вторичными индексами. Рекомендуется:

    • Перед обновлением изменить searchd.secondary_indexes на 0 в конфигурационном файле.
    • Запустить инстанс. Manticore загрузит таблицы с предупреждением.
    • Выполнить ALTER TABLE <table name> REBUILD SECONDARY для каждого индекса, чтобы перестроить вторичные индексы.

    Если вы используете кластер репликации, нужно выполнить ALTER TABLE <table name> REBUILD SECONDARY на всех узлах или следовать этой инструкции, только вместо OPTIMIZE запускать ALTER .. REBUILD SECONDARY.

  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Версия binlog была обновлена, поэтому любые binlog из предыдущих версий не будут воспроизведены. Важно обеспечить корректную остановку Manticore Search во время обновления. Это означает, что после остановки предыдущего инстанса в /var/lib/manticore/binlog/ не должно быть файлов binlog, кроме binlog.meta.

  • Issue #849 SHOW SETTINGS: теперь можно видеть настройки из конфигурационного файла изнутри Manticore.

  • Issue #1007 SET GLOBAL CPUSTATS=1/0 включает/выключает отслеживание времени CPU; SHOW THREADS теперь не показывает статистику CPU, если отслеживание времени CPU выключено.

  • Issue #1009 Сегменты RAM чанка RT таблицы теперь могут сливаться во время сброса RAM чанка.

  • Issue #1012 Добавлен прогресс вторичного индекса в вывод indexer.

  • Issue #1013 Ранее запись таблицы могла быть удалена Manticore из списка индексов, если она не могла начать обслуживать её при старте. Новое поведение — сохранять её в списке, чтобы попытаться загрузить при следующем старте.

  • indextool --docextract возвращает все слова и попадания, относящиеся к запрошенному документу.

  • Commit 2b29 Переменная окружения dump_corrupt_meta позволяет выводить повреждённые метаданные таблицы в лог, если searchd не может загрузить индекс.

  • Commit c7a3 DEBUG META теперь может показывать max_matches и статистику псевдо-шардинга.

  • Commit 6bca Улучшена ошибка вместо сбивающего с толку "Index header format is not json, will try it as binary...".

  • Commit bef3 Путь к украинскому лемматизатору изменён.

  • Commit 4ae7 Статистика вторичных индексов добавлена в SHOW META.

  • Commit 2e7c JSON интерфейс теперь можно легко визуализировать с помощью Swagger Editor https://manual.manticoresearch.com/Openapi#OpenAPI-specification.

  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Протокол репликации изменён. Если вы используете кластер репликации, при обновлении до Manticore 5 необходимо:

    • сначала корректно остановить все узлы
    • затем запустить последний остановленный узел с --new-cluster (в Linux использовать инструмент manticore_new_cluster).
    • подробнее о перезапуске кластера.

Изменения, связанные с Manticore Columnar Library

  • Рефакторинг интеграции вторичных индексов с колоночным хранилищем.
  • Commit efe2 Оптимизация Manticore Columnar Library, которая может снизить время отклика за счёт частичной предварительной оценки min/max.
  • Commit 2757 Если слияние дискового чанка прерывается, демон теперь очищает временные файлы, связанные с MCL.
  • Commit e9c6 Версии Columnar и вторичных библиотек выводятся в лог при сбое.
  • Commit f5e8 Добавлена поддержка быстрого перемотки doclist для вторичных индексов.
  • Commit 06df Запросы типа select attr, count(*) from plain_index (без фильтрации) теперь работают быстрее при использовании MCL.
  • Commit 0a76 @@autocommit в HandleMysqlSelectSysvar для совместимости с .net коннектором для mysql версии выше 8.25
  • ⚠️ BREAKING CHANGE: MCL Issue #17 MCL: добавлен SSE код для columnar сканирования. Теперь MCL требует минимум SSE4.2.

Изменения, связанные с упаковкой

  • Commit 4d19 ⚠️ BREAKING CHANGE: Поддержка Debian Stretch и Ubuntu Xenial прекращена.
  • Поддержка RHEL 9, включая Centos 9, Alma Linux 9 и Oracle Linux 9.
  • Issue #924 Поддержка Debian Bookworm.
  • Issue #636 Упаковка: сборки arm64 для Linux и MacOS.
  • PR #26 Мультиархитектурный (x86_64 / arm64) docker образ.
  • Упрощённая сборка пакетов для контрибьюторов.
  • Теперь можно установить конкретную версию через APT.
  • Commit a6b8 Установщик для Windows (ранее предоставлялся только архив).
  • Переход на компиляцию с использованием CLang 15.
  • ⚠️ BREAKING CHANGE: Кастомные формулы Homebrew, включая формулу для Manticore Columnar Library. Для установки Manticore, MCL и других необходимых компонентов используйте команду brew install manticoresoftware/manticore/manticoresearch manticoresoftware/manticore/manticore-extra.

Исправления ошибок

  • Issue #479 Поле с именем text
  • Issue #501 id не может быть не bigint
  • Issue #646 ALTER против поля с именем "text"
  • Issue #652 Возможная ошибка: HTTP (JSON) offset и limit влияют на результаты фасета
  • Issue #827 Searchd зависает/крашится при интенсивной нагрузке
  • Issue #996 PQ индекс: недостаточно памяти
  • Commit 1041 binlog_flush = 1 был сломан с времен Sphinx. Исправлено.
  • MCL Issue #14 MCL: сбой при select при слишком большом количестве ft полей
  • Issue #470 sql_joined_field не может быть сохранён
  • Issue #713 Сбой при использовании LEVENSHTEIN()
  • Issue #743 Manticore неожиданно падает и не может нормально перезапуститься
  • Issue #788 CALL KEYWORDS через /sql возвращает управляющий символ, который ломает json
  • Issue #789 mariadb не может создать таблицу FEDERATED
  • Issue #796 WARNING: dlopen() failed: /usr/bin/lib_manticore_columnar.so: невозможно открыть файл общего объекта: Нет такого файла или каталога
  • Issue #797 Manticore падает при поиске с ZONESPAN через api
  • Issue #799 неправильный вес при использовании нескольких индексов и facet distinct
  • Issue #801 SphinxQL групповой запрос зависает после перепроцессинга SQL индекса
  • Issue #802 MCL: Индексатор падает в 5.0.2 и manticore-columnar-lib 1.15.4
  • Issue #813 Manticore 5.0.2 FEDERATED возвращает пустой набор (MySQL 8.0.28)
  • Issue #824 select COUNT DISTINCT по 2 индексам при нулевом результате вызывает внутреннюю ошибку
  • Issue #826 Сбой при запросе на удаление
  • Issue #843 MCL: ошибка с длинным текстовым полем
  • Issue #856 5.0.2 rtindex: Поведение ограничения агрегированного поиска не соответствует ожиданиям
  • Issue #863 Возвращается объект NoneType даже для поисков, которые должны возвращать несколько результатов
  • Issue #870 Сбой при использовании Attribute и Stored Field в выражении SELECT
  • Issue #872 таблица становится невидимой после сбоя
  • Issue #877 Два отрицательных термина в поисковом запросе вызывают ошибку: запрос не вычисляем
  • Issue #878 a -b -c не работает через json query_string
  • Issue #886 pseudo_sharding с query match
  • Issue #893 Manticore 5.0.2 функция min/max не работает как ожидалось...
  • Issue #896 Поле "weight" парсится некорректно
  • Issue #897 Сервис Manticore падает при запуске и постоянно перезапускается
  • Issue #900 group by j.a, smth работает неправильно
  • Issue #913 Searchd падает при использовании expr в ranker, но только для запросов с двумя proximity
  • Issue #916 net_throttle_action сломан
  • Issue #919 MCL: Manticore падает при выполнении запроса и другие падения во время восстановления кластера.
  • Issue #925 SHOW CREATE TABLE выводит без обратных кавычек
  • Issue #930 Теперь можно выполнять запросы к Manticore из Java через JDBC коннектор
  • Issue #933 Проблемы с ранжированием bm25f
  • Issue #934 Индексы без конфигурации зависают в watchdog в состоянии первого запуска
  • Issue #937 Segfault при сортировке данных фасета
  • Issue #940 падение при CONCAT(TO_STRING)
  • Issue #947 В некоторых случаях один простой select мог вызвать зависание всего инстанса, из-за чего нельзя было войти или выполнить другие запросы, пока выполнялся select.
  • Issue #948 Падение индексатора
  • Issue #950 Неправильный подсчет из facet distinct
  • Issue #953 LCS вычисляется некорректно в встроенном sph04 ранжировщике
  • Issue #955 5.0.3 dev падает
  • Issue #963 FACET с json на движке columnar вызывает падение
  • Issue #982 MCL: 5.0.3 падение из-за вторичного индекса
  • PR #984 @@autocommit в HandleMysqlSelectSysvar
  • PR #985 Исправление распределения thread-chunk в RT индексах
  • Issue #985 Исправление распределения thread-chunk в RT индексах
  • Issue #986 Неправильное значение max_query_time по умолчанию
  • Issue #987 Падение при использовании регулярного выражения в многопоточном выполнении
  • Issue #988 Нарушена обратная совместимость индекса
  • Issue #989 indextool сообщает об ошибке при проверке атрибутов columnar
  • Issue #990 Утечка памяти json grouper clones
  • Issue #991 Утечка памяти при клонировании функции levenshtein
  • Issue #992 Сообщение об ошибке теряется при загрузке meta
  • Issue #993 Пропаганда ошибок из динамических индексов/subkeys и sysvars
  • Issue #994 Падение при count distinct по строковому столбцу в columnar хранилище
  • Issue #995 MCL: min(pickup_datetime) из taxi1 вызывает падение
  • Issue #997 Пустой excludes JSON запрос удаляет колонки из списка select
  • Issue #998 Вторичные задачи, запущенные на текущем планировщике, иногда вызывают аномальные побочные эффекты
  • Issue #999 Падение с facet distinct и разными схемами
  • Issue #1000 MCL: Columnar rt индекс повреждается после запуска без библиотеки columnar
  • Issue #1001 Не работает неявный cutoff в json
  • Issue #1002 Проблема с columnar grouper
  • Issue #1003 Невозможно удалить последнее поле из индекса
  • Issue #1004 Неправильное поведение после --new-cluster
  • Issue #1005 "columnar library not loaded", хотя она не требуется
  • Issue #1006 Нет ошибки для delete запроса
  • Issue #1010 Исправлено расположение файла данных ICU в сборках для Windows
  • PR #1018 Проблема отправки рукопожатия
  • Issue #1020 Отображение id в show create table
  • Issue #1024 crash 1 Сбой / Ошибка сегментации при поиске по фасетам с большим количеством результатов.
  • Issue #1026 RT индекс: searchd "зависает" навсегда при вставке большого количества документов и заполнении RAMchunk
  • Commit 4739 Поток зависает при завершении работы, пока репликация занята между узлами
  • Commit ab87 Смешивание float и int в JSON фильтре диапазона могло привести к игнорированию фильтра Manticore
  • Commit d001 Float фильтры в JSON были неточными
  • Commit 4092 Отбрасывать неподтверждённые транзакции, если индекс изменён (иначе может произойти сбой)
  • Commit 9692 Ошибка синтаксиса запроса при использовании обратного слэша
  • Commit 0c19 workers_clients могли быть неверными в SHOW STATUS
  • Commit 1772 Исправлен сбой при слиянии ram сегментов без docstores
  • Commit f45b Исправлено пропущенное условие ALL/ANY для equals JSON фильтра
  • Commit 3e83 Репликация могла завершиться с ошибкой got exception while reading ist stream: mkstemp(./gmb_pF6TJi) failed: 13 (Permission denied), если searchd был запущен из директории, в которую нет прав на запись.
  • Commit 92e5 С версии 4.0.2 лог сбоев включал только оффсеты. Этот коммит исправляет это.

Версия 5.0.2

Выпущено: 30 мая 2022

Исправления ошибок

  • Issue #791 - неправильный размер стека мог вызвать сбой.

Версия 5.0.0

Выпущено: 18 мая 2022

Основные новые возможности

  • 🔬 Поддержка Manticore Columnar Library 1.15.2, которая включает бета-версию Вторичных индексов. Построение вторичных индексов включено по умолчанию для простых и реального времени колоннарных и построчных индексов (если используется Manticore Columnar Library), но для включения их поиска необходимо установить secondary_indexes = 1 либо в конфигурационном файле, либо с помощью SET GLOBAL. Новая функциональность поддерживается во всех операционных системах, кроме старых Debian Stretch и Ubuntu Xenial.

  • Режим только для чтения: теперь можно указать слушателей, которые обрабатывают только запросы на чтение, игнорируя любые записи.

  • Новый эндпоинт /cli для ещё более простого выполнения SQL-запросов по HTTP.

  • Быстрее массовые INSERT/REPLACE/DELETE через JSON по HTTP: ранее можно было передавать несколько команд записи через HTTP JSON протокол, но они обрабатывались по одной, теперь они обрабатываются как одна транзакция.

  • #720 Поддержка Вложенных фильтров в JSON протоколе. Ранее нельзя было кодировать такие выражения как a=1 and (b=2 or c=3) в JSON: must (AND), should (OR) и must_not (NOT) работали только на верхнем уровне. Теперь они могут быть вложенными.

  • Поддержка Chunked transfer encoding в HTTP протоколе. Теперь вы можете использовать chunked transfer в вашем приложении для передачи больших пакетов с меньшим потреблением ресурсов (так как вычисление Content-Length не требуется). На стороне сервера Manticore теперь всегда обрабатывает входящие HTTP данные в потоковом режиме, не дожидаясь полной передачи пакета, как раньше, что:

    • снижает пиковое использование ОЗУ, уменьшая риск OOM
    • уменьшает время отклика (по нашим тестам сокращение на 11% при обработке пакета 100МБ)
    • позволяет обойти max_packet_size и передавать пакеты гораздо больше максимального разрешённого значения max_packet_size (128МБ), например, по 1ГБ за раз.
  • #719 Поддержка HTTP интерфейсом 100 Continue: теперь вы можете передавать большие пакеты из curl (включая curl библиотеки, используемые в различных языках программирования), которые по умолчанию делают Expect: 100-continue и ждут некоторое время перед фактической отправкой пакета. Ранее нужно было добавлять заголовок Expect:, теперь это не требуется.

    MORE
  • ⚠️ КРУПНОЕ ИЗМЕНЕНИЕ: Псевдо-шардинг включён по умолчанию. Если вы хотите его отключить, убедитесь, что добавили pseudo_sharding = 0 в секцию searchd вашего конфигурационного файла Manticore.

  • Наличие хотя бы одного полнотекстового поля в индексе реального времени/простом индексе больше не обязательно. Теперь вы можете использовать Manticore даже в случаях, не связанных с полнотекстовым поиском.

  • Быстрый выбор для атрибутов, поддерживаемых Manticore Columnar Library: запросы типа select * from <columnar table> теперь выполняются значительно быстрее, особенно если в схеме много полей.

  • ⚠️ КРУПНОЕ ИЗМЕНЕНИЕ: Неявный cutoff. Теперь Manticore не тратит время и ресурсы на обработку данных, которые вам не нужны в результирующем наборе. Минус в том, что это влияет на total_found в SHOW META и hits.total в JSON-выводе. Теперь это значение точно только если вы видите total_relation: eq, в то время как total_relation: gte означает, что фактическое количество совпадающих документов больше, чем значение total_found. Чтобы сохранить прежнее поведение, можно использовать опцию поиска cutoff=0, которая заставит total_relation всегда быть eq.

  • ⚠️ КРУПНОЕ ИЗМЕНЕНИЕ: Все полнотекстовые поля теперь по умолчанию хранятся. Чтобы сделать все поля не хранимыми (т.е. вернуть прежнее поведение), используйте stored_fields = (пустое значение).

  • #715 HTTP JSON теперь поддерживает опции поиска.

Мелкие изменения

  • ⚠️ КРУПНОЕ ИЗМЕНЕНИЕ: Изменён формат файла метаданных индекса. Ранее мета-файлы (.meta, .sph) были в бинарном формате, теперь это просто json. Новая версия Manticore автоматически конвертирует старые индексы, но:
    • вы можете получить предупреждение вида WARNING: ... syntax error, unexpected TOK_IDENT
    • вы не сможете запускать индекс с предыдущими версиями Manticore, убедитесь, что у вас есть резервная копия
  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Поддержка состояния сессии с помощью HTTP keep-alive. Это делает HTTP состояние при условии, что клиент также это поддерживает. Например, используя новый эндпоинт /cli и HTTP keep-alive (который включён по умолчанию во всех браузерах), вы можете вызвать SHOW META после SELECT, и это будет работать так же, как через mysql. Обратите внимание, что ранее HTTP-заголовок Connection: keep-alive тоже поддерживался, но он лишь приводил к повторному использованию того же соединения. Начиная с этой версии, это также делает сессию состоянием.
  • Теперь вы можете указать columnar_attrs = *, чтобы определить все ваши атрибуты как колоннарные в plain mode, что полезно, если список длинный.
  • Быстрее репликация SST
  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Протокол репликации был изменён. Если вы используете кластер репликации, то при обновлении до Manticore 5 вам нужно:
    • сначала корректно остановить все ваши узлы
    • затем запустить последний остановленный узел с параметром --new-cluster (запустите инструмент manticore_new_cluster в Linux).
    • подробнее читайте про перезапуск кластера.
  • Улучшения репликации:
    • Быстрее SST
    • Устойчивость к шуму, что помогает при нестабильной сети между узлами репликации
    • Улучшенное логирование
  • Улучшение безопасности: теперь Manticore слушает на 127.0.0.1 вместо 0.0.0.0, если в конфиге вообще не указан listen. Хотя в конфигурации по умолчанию, поставляемой с Manticore Search, параметр listen указан, и обычно конфигурация без listen не используется, такая возможность всё же есть. Ранее Manticore слушал на 0.0.0.0, что небезопасно, теперь он слушает на 127.0.0.1, который обычно не доступен из Интернета.
  • Быстрее агрегация по колоннарным атрибутам.
  • Повышена точность AVG(): ранее Manticore использовал float для агрегаций, теперь используется double, что значительно повышает точность.
  • Улучшена поддержка JDBC MySQL драйвера.
  • Поддержка DEBUG malloc_stats для jemalloc.
  • optimize_cutoff теперь доступен как настройка на таблицу, которую можно задать при CREATE или ALTER таблицы.
  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: query_log_format теперь по умолчанию sphinxql. Если вы привыкли к формату plain, добавьте query_log_format = plain в ваш конфигурационный файл.
  • Значительные улучшения по потреблению памяти: теперь Manticore потребляет значительно меньше ОЗУ при длительной и интенсивной нагрузке insert/replace/optimize, если используются сохранённые поля.
  • Значение по умолчанию для shutdown_timeout увеличено с 3 секунд до 60 секунд.
  • Коммит ffd0 Поддержка Java mysql connector >= 6.0.3: в Java mysql connection 6.0.3 изменён способ подключения к mysql, что нарушило совместимость с Manticore. Новое поведение теперь поддерживается.
  • Коммит 1da6 отключено сохранение нового дискового чанка при загрузке индекса (например, при старте searchd).
  • Issue #746 Поддержка glibc >= 2.34.
  • Issue #784 подсчёт 'VIP' соединений отдельно от обычных (не-VIP). Ранее VIP соединения учитывались в лимите max_connections, что могло вызывать ошибку "maxed out" для не-VIP соединений. Теперь VIP соединения не учитываются в лимите. Текущее число VIP соединений также можно увидеть в SHOW STATUS и status.
  • ID теперь можно указывать явно.
  • Issue #687 поддержка сжатия zstd для mysql протокола

⚠️ Другие мелкие критические изменения

  • ⚠️ Формула BM25F была слегка обновлена для улучшения релевантности поиска. Это влияет только на результаты поиска при использовании функции BM25F(), не меняет поведение формулы ранжирования по умолчанию.
  • ⚠️ Изменено поведение REST эндпоинта /sql: /sql?mode=raw теперь требует экранирования и возвращает массив.
  • ⚠️ Изменён формат ответа на запросы /bulk INSERT/REPLACE/DELETE:
    • ранее каждый подзапрос был отдельной транзакцией и возвращал отдельный ответ
    • теперь весь пакет считается одной транзакцией и возвращает один ответ
  • ⚠️ Опции поиска low_priority и boolean_simplify теперь требуют значения (0/1): ранее можно было писать SELECT ... OPTION low_priority, boolean_simplify, теперь нужно SELECT ... OPTION low_priority=1, boolean_simplify=1.
  • ⚠️ Если вы используете старые клиенты php, python или java, пожалуйста, перейдите по соответствующей ссылке и найдите обновлённую версию. Старые версии не полностью совместимы с Manticore 5.
  • ⚠️ HTTP JSON запросы теперь логируются в другом формате в режиме query_log_format=sphinxql. Ранее логировалась только полнотекстовая часть, теперь логируется как есть.

Новые пакеты

  • ⚠️ КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: из-за новой структуры при обновлении до Manticore 5 рекомендуется удалить старые пакеты перед установкой новых:

    • Для RPM-систем: yum remove manticore*
    • Для Debian и Ubuntu: apt remove manticore*
  • Новая структура пакетов deb/rpm. Предыдущие версии предоставляли:

    • manticore-server с searchd (основной демон поиска) и всем необходимым для него
    • manticore-tools с indexer и indextool
    • manticore, включающий всё
    • manticore-all RPM как мета-пакет, ссылающийся на manticore-server и manticore-tools

    Новая структура:

    • manticore - мета-пакет deb/rpm, который устанавливает все вышеперечисленные как зависимости
    • manticore-server-core - searchd и всё для его автономной работы
    • manticore-server - systemd файлы и другие вспомогательные скрипты
    • manticore-tools - indexer, indextool и другие инструменты
    • manticore-common - файл конфигурации по умолчанию, каталог данных по умолчанию, стоп-слова по умолчанию
    • manticore-icudata, manticore-dev, manticore-converter изменились незначительно
    • .tgz пакет, включающий все пакеты
  • Поддержка Ubuntu Jammy

  • Поддержка Amazon Linux 2 через YUM репозиторий

Исправления ошибок

  • Issue #815 Случайный сбой при использовании UDF функции
  • Issue #287 недостаток памяти при индексировании RT индекса
  • Issue #604 Ломающее изменение в sphinxql-parser версий 3.6.0, 4.2.0
  • Issue #667 FATAL: недостаток памяти (не удалось выделить 9007199254740992 байт)
  • Issue #676 Строки неправильно передаются в UDF
  • Issue #698 Searchd падает после попытки добавить текстовый столбец в rt индекс
  • Issue #705 Indexer не мог найти все столбцы
  • Issue #709 Группировка по json.boolean работает неправильно
  • Issue #716 Ошибки команд indextool, связанных с индексом (например, --dumpdict)
  • Issue #724 Поля исчезают из выборки
  • Issue #727 Несовместимость Content-Type в .NET HttpClient при использовании application/x-ndjson
  • Issue #729 Расчёт длины поля
  • Issue #730 create/insert into/drop columnar table вызывает утечку памяти
  • Issue #731 Пустой столбец в результатах при определённых условиях
  • Issue #749 Сбой демона при запуске
  • Issue #750 Демон зависает при запуске
  • Issue #751 Сбой при SST
  • Issue #752 Json атрибут помечен как columnar при engine='columnar'
  • Issue #753 Репликация слушает на 0
  • Issue #754 columnar_attrs = * не работает с csvpipe
  • Issue #755 Сбой при выборе float в columnar в rt
  • Issue #756 Indextool изменяет rt индекс во время проверки
  • Issue #757 Необходима проверка пересечений диапазонов портов слушателей
  • Issue #758 Логирование оригинальной ошибки в случае сбоя сохранения RT индекса на диск
  • Issue #759 Сообщается только одна ошибка для конфигурации RE2
  • Issue #760 Изменения потребления ОЗУ в коммите 5463778558586d2508697fa82e71d657ac36510f
  • Issue #761 Третий узел не создаёт непервичный кластер после грязного рестарта
  • Issue #762 Счётчик обновлений увеличивается на 2
  • Issue #763 Новая версия 4.2.1 повреждает индекс, созданный с 4.2.0 с использованием морфологии
  • Issue #764 Отсутствует экранирование в ключах json /sql?mode=raw
  • Issue #765 Использование функции скрывает другие значения
  • Issue #766 Утечка памяти, вызванная строкой в FixupAttrForNetwork
  • Issue #767 Утечка памяти в версиях 4.2.0 и 4.2.1, связанная с кэшем docstore
  • Issue #768 Странный пинг-понг с сохранёнными полями по сети
  • Issue #769 lemmatizer_base сбрасывается в пустое значение, если не указан в разделе 'common'
  • Issue #770 pseudo_sharding замедляет SELECT по id
  • Issue #771 DEBUG malloc_stats выводит нули при использовании jemalloc
  • Issue #772 Drop/add column делает значение невидимым
  • Issue #773 Невозможно добавить столбец bit(N) в columnar таблицу
  • Issue #774 "cluster" становится пустым при запуске в manticore.json
  • Commit 1da4 HTTP действия не отслеживаются в SHOW STATUS
  • Commit 3810 отключение pseudo_sharding для запросов с низкой частотой и одним ключевым словом
  • Commit 8003 исправлена ошибка слияния сохранённых атрибутов и индекса
  • Commit cddf обобщены выборщики уникальных значений; добавлены специализированные выборщики уникальных значений для колонковых строк
  • Commit fba4 исправлен выбор нулевых целочисленных атрибутов из docstore
  • Commit f300 ranker мог быть указан дважды в журнале запросов

Версия 4.2.0, 23 декабря 2021

Основные новые возможности

  • Поддержка псевдо-шардинга для индексов реального времени и полнотекстовых запросов. В предыдущем релизе мы добавили ограниченную поддержку псевдо-шардинга. Начиная с этой версии, вы можете получить все преимущества псевдо-шардинга и вашего многоядерного процессора, просто включив searchd.pseudo_sharding. Самое классное, что вам не нужно ничего делать с вашими индексами или запросами, просто включите его, и если у вас есть свободный CPU, он будет использован для снижения времени отклика. Поддерживаются обычные и индексы реального времени для полнотекстовых, фильтрационных и аналитических запросов. Например, вот как включение псевдо-шардинга может сделать среднее время отклика большинства запросов примерно в 10 раз меньше на наборе данных курируемых комментариев Hacker news, умноженном в 100 раз (116 миллионов документов в обычном индексе).

Псевдо-шардинг включен против выключен в 4.2.0

  • Транзакции PQ теперь атомарны и изолированы. Ранее поддержка транзакций PQ была ограничена. Это обеспечивает гораздо быстрее REPLACE в PQ, особенно когда нужно заменить много правил одновременно. Детали производительности:
‹›
  • 4.0.2
  • 4.2.0
📋

Вставка 1 миллиона правил PQ занимает 48 секунд, а REPLACE всего 40 тысяч правил в партиях по 10 тысяч — 406 секунд.

root@perf3 ~ # mysql -P9306 -h0 -e "drop table if exists pq; create table pq (f text, f2 text, j json, s string) type='percolate';"; date; for m in `seq 1 1000`; do (echo -n "insert into pq (id,query,filters,tags) values "; for n in `seq 1 1000`; do echo -n "(0,'@f (cat | ( angry dog ) | (cute mouse)) @f2 def', 'j.json.language=\"en\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; [ $n != 1000 ] && echo -n ","; done; echo ";")|mysql -P9306 -h0; done; date; mysql -P9306 -h0 -e "select count(*) from pq"

Wed Dec 22 10:24:30 AM CET 2021
Wed Dec 22 10:25:18 AM CET 2021
+----------+
| count(*) |
+----------+
|  1000000 |
+----------+

root@perf3 ~ # date; (echo "begin;"; for offset in `seq 0 10000 30000`; do n=0; echo "replace into pq (id,query,filters,tags) values "; for id in `mysql -P9306 -h0 -NB -e "select id from pq limit $offset, 10000 option max_matches=1000000"`; do echo "($id,'@f (tiger | ( angry bear ) | (cute panda)) @f2 def', 'j.json.language=\"de\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; n=$((n+1)); [ $n != 10000 ] && echo -n ","; done; echo ";"; done; echo "commit;") > /tmp/replace.sql; date
Wed Dec 22 10:26:23 AM CET 2021
Wed Dec 22 10:26:27 AM CET 2021
root@perf3 ~ # time mysql -P9306 -h0 < /tmp/replace.sql

real    6m46.195s
user    0m0.035s
sys 0m0.008s

Незначительные изменения

  • optimize_cutoff теперь доступен как опция конфигурации в секции searchd. Это полезно, если вы хотите ограничить количество RT чанков во всех ваших индексах до определённого числа глобально.
  • Commit 0087 точный count(distinct ...) и FACET ... distinct по нескольким локальным физическим индексам (реального времени/обычным) с идентичным набором/порядком полей.
  • PR #598 поддержка bigint для YEAR() и других функций временных меток.
  • Commit 8e85 Адаптивный rt_mem_limit. Ранее Manticore Search собирал ровно до rt_mem_limit данных перед сохранением нового дискового чанка, и во время сохранения продолжал собирать до 10% больше (так называемый двойной буфер) для минимизации возможной приостановки вставки. Если этот лимит тоже исчерпывался, добавление новых документов блокировалось до полного сохранения дискового чанка. Новый адаптивный лимит основан на том, что теперь у нас есть auto-optimize, поэтому не страшно, если дисковые чанки не полностью соответствуют rt_mem_limit и начинают сброс чанка раньше. Теперь мы собираем до 50% от rt_mem_limit и сохраняем это как дисковый чанк. При сохранении мы смотрим на статистику (сколько сохранили, сколько новых документов пришло во время сохранения) и пересчитываем исходный коэффициент, который будет использоваться в следующий раз. Например, если мы сохранили 90 миллионов документов, а во время сохранения пришло ещё 10 миллионов, коэффициент 90%, значит в следующий раз можно собирать до 90% от rt_mem_limit перед началом сброса следующего дискового чанка. Значение коэффициента рассчитывается автоматически от 33.3% до 95%.
  • Issue #628 unpack_zlib для источника PostgreSQL. Спасибо, Dmitry Voronin за вклад.
  • Commit 6d54 indexer -v и --version. Ранее можно было увидеть версию индексатора, но -v/--version не поддерживались.
  • Issue #662 бесконечный лимит mlock по умолчанию при запуске Manticore через systemd.
  • Commit 63c8 spinlock -> очередь операций для coro rwlock.
  • Commit 4113 переменная окружения MANTICORE_TRACK_RT_ERRORS, полезная для отладки повреждений сегментов RT.

Ломающие изменения

  • Версия Binlog была увеличена, binlog из предыдущей версии не будет воспроизведён, поэтому убедитесь, что вы корректно остановили Manticore Search во время обновления: после остановки предыдущего экземпляра в /var/lib/manticore/binlog/ не должно быть файлов binlog, кроме binlog.meta.
  • Коммит 3f65 новый столбец "chain" в show threads option format=all. Он показывает стек некоторых информационных тикетов задач, наиболее полезен для профилирования, поэтому если вы парсите вывод show threads, обратите внимание на новый столбец.
  • searchd.workers устарел с версии 3.5.0, теперь он deprecated, если он всё ещё есть в вашем конфигурационном файле, при запуске будет предупреждение. Manticore Search запустится, но с предупреждением.
  • Если вы используете PHP и PDO для доступа к Manticore, вам нужно установить PDO::ATTR_EMULATE_PREPARES

Исправления ошибок

  • Issue #650 Manticore 4.0.2 медленнее, чем Manticore 3.6.3. 4.0.2 была быстрее предыдущих версий при массовых вставках, но значительно медленнее при вставке одиночных документов. Исправлено в 4.2.0.
  • Коммит 22f4 RT индекс мог повредиться при интенсивной нагрузке REPLACE, или мог аварийно завершиться
  • Коммит 03be исправлен average при слиянии группировщиков и сортировщика group N; исправлено слияние агрегатов
  • Коммит 2ea5 indextool --check мог аварийно завершиться
  • Коммит 7ec7 проблема исчерпания RAM из-за UPDATE
  • Коммит 658a демон мог зависать при INSERT
  • Коммит 46e4 демон мог зависать при завершении работы
  • Коммит f8d7 демон мог аварийно завершиться при завершении работы
  • Коммит 733a демон мог зависать при аварии
  • Коммит f7f8 демон мог аварийно завершиться при запуске, пытаясь повторно присоединиться к кластеру с неверным списком узлов
  • Коммит 1401 распределённый индекс мог полностью забываться в режиме RT, если не удавалось разрешить одного из его агентов при запуске
  • Issue #683 атрибут bit(N) engine='columnar' не работает
  • Issue #682 create table завершается с ошибкой, но оставляет директорию
  • Issue #663 Конфигурация завершается с ошибкой: неизвестное имя ключа 'attr_update_reserve'
  • Issue #632 Авария Manticore при пакетных запросах
  • Issue #679 Пакетные запросы снова вызывают аварии в версии v4.0.3
  • Коммит f7f8 исправлена авария демона при запуске, пытаясь повторно присоединиться к кластеру с неверным списком узлов
  • Issue #643 Manticore 4.0.2 не принимает подключения после серии вставок
  • Issue #635 FACET запрос с ORDER BY JSON.field или строковым атрибутом мог вызывать аварию
  • Issue #634 Авария SIGSEGV при запросе с packedfactors
  • Коммит 4165 morphology_skip_fields не поддерживался при create table

Версия 4.0.2, 21 сентября 2021

Основные новые возможности

  • Полная поддержка Manticore Columnar Library. Ранее Manticore Columnar Library поддерживалась только для обычных индексов. Теперь поддерживается:

    • в индексах реального времени для INSERT, REPLACE, DELETE, OPTIMIZE
    • в репликации
    • в ALTER
    • в indextool --check
  • Автоматическая компактация индексов (Issue #478). Наконец, вам не нужно вызывать OPTIMIZE вручную или через crontask или другой вид автоматизации. Manticore теперь делает это автоматически и по умолчанию. Вы можете задать порог компактации по умолчанию через глобальную переменную optimize_cutoff.

  • Переработка системы снимков и блокировок чанков. Эти изменения могут быть незаметны снаружи на первый взгляд, но значительно улучшают поведение многих операций в индексах реального времени. Вкратце, ранее большинство операций манипуляции данными в Manticore сильно зависели от блокировок, теперь мы используем снимки дисковых чанков.

  • Значительно более быстрая производительность массовой вставки в индекс реального времени. Например, на сервере Hetzner AX101 с SSD, 128 ГБ ОЗУ и AMD Ryzen™ 9 5950X (16*2 ядра) с версией 3.6.0 можно было вставлять 236K документов в секунду в таблицу со схемой name text, email string, description text, age int, active bit(1) (по умолчанию rt_mem_limit, размер пакета 25000, 16 параллельных воркеров вставки, всего вставлено 16 миллионов документов). В версии 4.0.2 при тех же параметрах параллелизма/пакета/количества достигается 357K документов в секунду.

    MORE
  • ALTER может добавить/удалить полнотекстовое поле (в режиме RT). Ранее он мог только добавить/удалить атрибут.

  • 🔬 Экспериментально: псевдо-шардинг для полносканирующих запросов — позволяет распараллелить любой запрос поиска, не связанный с полнотекстовым поиском. Вместо ручной подготовки шардов теперь можно просто включить новую опцию searchd.pseudo_sharding и ожидать до CPU cores раз меньшую задержку отклика для запросов без полнотекстового поиска. Обратите внимание, что это может легко занять все существующие ядра CPU, поэтому если вам важна не только задержка, но и пропускная способность — используйте с осторожностью.

Незначительные изменения

  • Linux Mint и Ubuntu Hirsute Hippo поддерживаются через APT репозиторий
  • более быстрое обновление по id через HTTP в больших индексах в некоторых случаях (зависит от распределения id)
  • 671e65a2 — добавлено кэширование для lemmatizer-uk
‹›
  • 3.6.0
  • 4.0.2
📋
time curl -X POST -d '{"update":{"index":"idx","id":4611686018427387905,"doc":{"mode":0}}}' -H "Content-Type: application/x-ndjson" http://127.0.0.1:6358/json/bulk
real    0m43.783s
user    0m0.008s
sys     0m0.007s

Ломающее изменения

  • новая версия может читать старые индексы, но старые версии не могут читать индексы Manticore 4
  • удалена неявная сортировка по id. Сортируйте явно, если требуется
  • значение по умолчанию для charset_table изменено с 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451 на non_cjk
  • OPTIMIZE происходит автоматически. Если это не нужно, убедитесь, что в секции searchd в конфигурационном файле установлено auto_optimize=0
  • Issue #616 ondisk_attrs_default устарели, теперь они удалены
  • для контрибьюторов: теперь мы используем компилятор Clang для сборок Linux, так как по нашим тестам он может собрать более быстрый Manticore Search и Manticore Columnar Library
  • если в поисковом запросе не указан max_matches, он обновляется неявно до минимально необходимого значения ради производительности нового колоночного хранилища. Это может повлиять на метрику total в SHOW META, но не на total_found, который отражает фактическое количество найденных документов.

Миграция с Manticore 3

  • убедитесь, что вы корректно остановили Manticore 3:
    • в /var/lib/manticore/binlog/ не должно быть файлов binlog (в каталоге должен быть только binlog.meta)
    • иначе индексы, для которых Manticore 4 не может воспроизвести binlog, не будут запущены
  • новая версия может читать старые индексы, но старые версии не могут читать индексы Manticore 4, поэтому сделайте резервную копию, если хотите иметь возможность легко откатиться к старой версии
  • если вы запускаете кластер репликации, убедитесь, что:
    • сначала корректно остановили все узлы
    • затем запустили последний остановленный узел с --new-cluster (запустите инструмент manticore_new_cluster в Linux).
    • прочитайте про перезапуск кластера для подробностей

Исправления ошибок

  • Исправлено множество проблем с репликацией:
    • Commit 696f — исправлен сбой во время SST на joiner с активным индексом; добавлена проверка sha1 на joiner при записи чанков файлов для ускорения загрузки индекса; добавлена ротация изменённых файлов индекса на joiner при загрузке индекса; добавлено удаление файлов индекса на joiner, когда активный индекс заменяется новым индексом с donor; добавлены точки логирования репликации на donor для отправки файлов и чанков
    • Коммит b296 - сбой при JOIN CLUSTER в случае неправильного адреса
    • Коммит 418b - при начальной репликации большого индекса узел, присоединяющийся к кластеру, мог завершиться с ошибкой ERROR 1064 (42000): invalid GTID, (null), донор мог стать неотзывчивым, пока другой узел присоединялся
    • Коммит 6fd3 - хэш мог быть рассчитан неправильно для большого индекса, что могло привести к сбою репликации
    • Issue #615 - сбой репликации при перезапуске кластера
  • Issue #574 - indextool --help не отображает параметр --rotate
  • Issue #578 - высокая загрузка CPU у searchd в режиме ожидания после примерно суток работы
  • Issue #587 - немедленная запись flush .meta
  • Issue #617 - manticore.json очищается
  • Issue #618 - searchd --stopwait не работает под root. Также исправлено поведение systemctl (ранее показывал ошибку для ExecStop и не ждал достаточно долго для корректной остановки searchd)
  • Issue #619 - INSERT/REPLACE/DELETE vs SHOW STATUS. command_insert, command_replace и другие показывали неправильные метрики
  • Issue #620 - charset_table для plain индекса имел неправильное значение по умолчанию
  • Коммит 8f75 - новые дисковые чанки не блокируются в памяти (mlocked)
  • Issue #607 - узел кластера Manticore падает при невозможности разрешить имя узла
  • Issue #623 - репликация обновленного индекса может привести к неопределенному состоянию
  • Коммит ca03 - indexer мог зависать при индексации plain источника с json атрибутом
  • Коммит 53c7 - исправлен фильтр выражения "не равно" в PQ индексе
  • Коммит ccf9 - исправлен выбор окон в list запросах с более чем 1000 совпадениями. SELECT * FROM pq ORDER BY id desc LIMIT 1000 , 100 OPTION max_matches=1100 ранее не работал
  • Коммит a048 - HTTPS запрос к Manticore мог вызвать предупреждение типа "max packet size(8388608) exceeded"
  • Issue #648 - Manticore 3 мог зависать после нескольких обновлений строковых атрибутов

Версия 3.6.0, 3 мая 2021

Релиз технического обслуживания перед Manticore 4

Основные новые возможности

  • Поддержка Manticore Columnar Library для plain индексов. Новая настройка columnar_attrs для plain индексов
  • Поддержка украинского лемматизатора
  • Полностью переработанные гистограммы. При построении индекса Manticore также строит гистограммы для каждого поля, которые затем используются для более быстрого фильтрования. В версии 3.6.0 алгоритм был полностью переработан, и вы можете получить более высокую производительность при большом объеме данных и интенсивном фильтровании.

Незначительные изменения

Оптимизации

  • ускоренный разбор JSON, наши тесты показывают снижение задержки на 3-4% для запросов типа WHERE json.a = 1
  • недокументированная команда DEBUG SPLIT как предпосылка для автоматического шардинга/ребалансировки

Исправления ошибок

  • Issue #584 - неточные и нестабильные результаты FACET
  • Issue #506 - странное поведение при использовании MATCH: пострадавшим от этой проблемы необходимо перестроить индекс, так как проблема была на этапе построения индекса
  • Issue #387 - периодический дамп памяти при выполнении запроса с функцией SNIPPET()
  • Оптимизации стека, полезные для обработки сложных запросов:
    • Issue #469 - SELECT приводит к CRASH DUMP
    • e8420cc7 - определение размера стека для деревьев фильтров
  • Issue #461 - Обновление с использованием условия IN не применяется корректно
  • Issue #464 - SHOW STATUS сразу после CALL PQ возвращает - Issue #481 - Исправлена статическая сборка бинарника
  • Issue #502 - ошибка в мультизапросах
  • Issue #514 - Невозможно использовать необычные имена для столбцов при использовании 'create table'
  • Commit d1db - сбой демона при воспроизведении binlog с обновлением строкового атрибута; установлен binlog версии 10
  • Commit 775d - исправлено время обнаружения фрейма стека выражения (тест 207)
  • Commit 4795 - фильтр индекса перколяции и теги были пустыми для пустого сохранённого запроса (тест 369)
  • Commit c3f0 - сбои потока репликации SST при сети с большой задержкой и высокой ошибочностью (репликация между разными дата-центрами); обновлена версия команды репликации до 1.03
  • Commit ba2d - блокировка кластера joiner при операциях записи после присоединения к кластеру (тест 385)
  • Commit de4d - сопоставление с подстановочными знаками с точным модификатором (тест 321)
  • Commit 6524 - контрольные точки docid против docstore
  • Commit f4ab - Несогласованное поведение индексатора при разборе некорректного xml
  • Commit 7b72 - Сохранённый запрос перколяции с NOTNEAR выполняется бесконечно (тест 349)
  • Commit 812d - неправильный вес для фразы, начинающейся с подстановочного знака
  • Commit 1771 - запрос перколяции с подстановочными знаками генерирует термы без полезной нагрузки при сопоставлении, что вызывает перемешанные попадания и нарушает сопоставление (тест 417)
  • Commit aa0d - исправлен расчёт 'total' в случае параллельного запроса
  • Commit 18d8 - сбой в Windows при множественных одновременных сессиях в демоне
  • Commit 8443 - некоторые настройки индекса не могли быть реплицированы
  • Commit 9341 - При высокой скорости добавления новых событий netloop иногда зависает из-за атомарного события 'kick', обрабатываемого один раз для нескольких событий одновременно и теряющего фактические действия из них статус запроса, а не статус сервера
  • Commit d805 - Новый сброшенный на диск чанк может быть потерян при коммите
  • Commit 63cb - неточная 'net_read' в профайлере
  • Commit f537 - Проблема перколяции с арабским (тексты справа налево)
  • Commit 49ee - id неправильно выбирался при дублировании имени столбца
  • Commit refa исправление сетевых событий для устранения сбоя в редких случаях
  • e8420cc7 исправление в indextool --dumpheader
  • Commit ff71 - TRUNCATE WITH RECONFIGURE работал неправильно с сохранёнными полями

Ломающее изменения:

  • Новый формат binlog: необходимо корректно остановить Manticore перед обновлением
  • Формат индекса слегка изменился: новая версия может корректно читать ваши существующие индексы, но если вы решите откатиться с 3.6.0 на более старую версию, новые индексы будут нечитаемы
  • Изменение формата репликации: не реплицируйте с более старой версии на 3.6.0 и наоборот, переключайтесь на новую версию на всех ваших узлах одновременно
  • reverse_scan устарел. Убедитесь, что вы не используете эту опцию в ваших запросах с версии 3.6.0, иначе они будут выдавать ошибку
  • Начиная с этого релиза мы больше не предоставляем сборки для RHEL6, Debian Jessie и Ubuntu Trusty. Если для вас критично их поддерживать, свяжитесь с нами

Устаревания

  • Больше нет неявной сортировки по id. Если вы на неё полагаетесь, обновите ваши запросы соответствующим образом
  • Опция поиска reverse_scan устарела

Версия 3.5.4, 10 декабря 2020

Новые возможности

  • Новые клиенты для Python, Javascript и Java теперь доступны в общем доступе и хорошо документированы в этом руководстве.
  • автоматическое удаление дискового чанка индекса реального времени. Эта оптимизация позволяет автоматически удалять дисковый чанк при OPTIMIZING индекса реального времени, когда чанк явно больше не нужен (все документы подавлены). Ранее для этого требовалось слияние, теперь чанк можно просто мгновенно удалить. Опция cutoff игнорируется, т.е. даже если ничего фактически не сливается, устаревший дисковый чанк удаляется. Это полезно, если вы поддерживаете ретеншн в индексе и удаляете старые документы. Теперь сжатие таких индексов будет быстрее.
  • standalone NOT как опция для SELECT

Незначительные изменения

  • Issue #453 Новая опция indexer.ignore_non_plain=1 полезна, если вы запускаете indexer --all и в конфигурационном файле есть не только plain индексы. Без ignore_non_plain=1 вы получите предупреждение и соответствующий код выхода.
  • SHOW PLAN ... OPTION format=dot и EXPLAIN QUERY ... OPTION format=dot позволяют визуализировать выполнение плана полнотекстового запроса. Полезно для понимания сложных запросов.

Устаревшие возможности

  • indexer --verbose устарел, так как никогда не добавлял ничего к выводу indexer
  • Для дампа бэктрейса watchdog теперь следует использовать сигнал USR2 вместо USR1

Исправления ошибок

  • Issue #423 кириллический символ точка в режиме вызова сниппетов не подсвечивается
  • Issue #435 RTINDEX - GROUP N BY expression select = фатальный сбой
  • Commit 2b3b статус searchd показывает Segmentation fault при работе в кластере
  • Commit 9dd2 'SHOW INDEX index.N SETTINGS' не обрабатывает чанки >9
  • Issue #389 Ошибка, приводящая к сбою Manticore
  • Commit fba1 Конвертер создает поврежденные индексы
  • Commit eecd stopword_step=0 против CALL SNIPPETS()
  • Commit ea68 count distinct возвращает 0 при низком max_matches на локальном индексе
  • Commit 362f При использовании агрегации хранимые тексты не возвращаются в результатах

Версия 3.5.2, 1 октября 2020

Новые возможности

  • OPTIMIZE уменьшает количество дисковых чанков до числа чанков (по умолчанию 2* No. of cores), а не до одного. Оптимальное число чанков можно контролировать с помощью опции cutoff.
  • Оператор NOT теперь можно использовать самостоятельно. По умолчанию он отключен, так как случайные одиночные запросы с NOT могут быть медленными. Его можно включить, установив новую директиву searchd not_terms_only_allowed в 0.
  • Новая настройка max_threads_per_query задает, сколько потоков может использовать запрос. Если директива не установлена, запрос может использовать потоки до значения threads. Для каждого запроса SELECT количество потоков можно ограничить с помощью OPTION threads=N, переопределяющей глобальный max_threads_per_query.
  • Перколяторные индексы теперь можно импортировать с помощью IMPORT TABLE.
  • HTTP API /search получает базовую поддержку фасетного поиска/группировки через новый узел запроса aggs.

Незначительные изменения

  • Если директива replication listen не объявлена, движок будет пытаться использовать порты после заданного порта 'sphinx', до 200.
  • listen=...:sphinx теперь нужно явно указывать для подключений SphinxSE или клиентов SphinxAPI.
  • SHOW INDEX STATUS выводит новые метрики: killed_documents, killed_rate, disk_mapped_doclists, disk_mapped_cached_doclists, disk_mapped_hitlists и disk_mapped_cached_hitlists.
  • SQL команда status теперь выводит Queue\Threads и Tasks\Threads.

Устаревшие возможности:

  • dist_threads полностью устарел, searchd будет выводить предупреждение, если директива все еще используется.

Docker

Официальный Docker-образ теперь основан на Ubuntu 20.04 LTS

Пакетирование

Помимо обычного пакета manticore, вы также можете установить Manticore Search по компонентам:

  • manticore-server-core - предоставляет searchd, manpage, каталог логов, API и модуль galera. Также установит manticore-common как зависимость.
  • manticore-server - предоставляет скрипты автоматизации для ядра (init.d, systemd) и обертку manticore_new_cluster. Также установит manticore-server-core как зависимость.
  • manticore-common - предоставляет конфигурацию, стоп-слова, общие документы и скелетные папки (datadir, modules и т.д.)
  • manticore-tools - предоставляет вспомогательные инструменты (indexer, indextool и др.), их man-страницы и примеры. Также установит manticore-common как зависимость.
  • manticore-icudata (RPM) или manticore-icudata-65l (DEB) - предоставляет ICU data файл для использования ICU морфологии.
  • manticore-devel (RPM) или manticore-dev (DEB) - предоставляет заголовочные файлы для UDF.

Исправления ошибок

  1. Коммит 2a47 Сбой демона в grouper на RT индексе с разными чанками
  2. Коммит 57a1 Быстрый путь для пустых удалённых документов
  3. Коммит 07dd Время выполнения обнаружения фрейма стека выражения
  4. Коммит 08ae Совпадение более чем по 32 полям в percolate индексах
  5. Коммит 16b9 Диапазон портов для прослушивания репликации
  6. Коммит 5fa6 Показать create table в pq
  7. Коммит 54d1 Поведение HTTPS порта
  8. Коммит fdbb Перемешивание строк docstore при замене
  9. Коммит afb5 Переключение уровня сообщения TFO unavailable на 'info'
  10. Коммит 59d9 Сбой при неправильном использовании strcmp
  11. Коммит 04af Добавление индекса в кластер с системными (стоп-словами) файлами
  12. Коммит 5014 Слияние индексов с большими словарями; оптимизация RT больших дисковых чанков
  13. Коммит a2ad Indextool может выгружать метаданные из текущей версии
  14. Коммит 69f6 Проблема с порядком группировки в GROUP N
  15. Коммит 24d5 Явная очистка для SphinxSE после рукопожатия
  16. Коммит 31c4 Избегать копирования больших описаний, когда это не нужно
  17. Коммит 2959 Отрицательное время в show threads
  18. Коммит f0b3 Плагин фильтра токенов против нулевых дельт позиций
  19. Коммит a49e Изменение 'FAIL' на 'WARNING' при множественных попаданиях

Версия 3.5.0, 22 июля 2020

Основные новые возможности:

  • Этот релиз занял много времени, потому что мы усердно работали над изменением режима многозадачности с потоков на корутины. Это упрощает конфигурацию и делает параллелизацию запросов гораздо более прямолинейной: Manticore просто использует заданное количество потоков (см. новую настройку threads), а новый режим гарантирует, что это сделано максимально оптимально.

  • Изменения в подсветке:

    • любая подсветка, работающая с несколькими полями (highlight({},'field1, field2') или highlight в json-запросах) теперь по умолчанию применяет ограничения по каждому полю отдельно.
    • любая подсветка, работающая с простым текстом (highlight({}, string_attr) или snippet()) теперь применяет ограничения ко всему документу.
    • ограничения по полям можно переключить на глобальные ограничения опцией limits_per_field=0 (по умолчанию 1).
    • allow_empty теперь по умолчанию 0 для подсветки через HTTP JSON.
  • Теперь один и тот же порт можно использовать для http, https и бинарного API (для приёма соединений от удалённого экземпляра Manticore). listen = *:mysql всё ещё требуется для соединений по протоколу mysql. Manticore теперь автоматически определяет тип клиента, пытающегося подключиться, за исключением MySQL (из-за ограничений протокола).

  • В режиме RT поле теперь может быть одновременно текстовым и строковым атрибутом - GitHub issue #331.

    В plain режиме это называется sql_field_string. Теперь оно доступно и в RT режиме для real-time индексов. Вы можете использовать это, как показано в примере:

    create table t(f string attribute indexed);
    insert into t values(0,'abc','abc');
    select * from t where match('abc');
    +---------------------+------+
    | id                  | f    |
    +---------------------+------+
    | 2810845392541843463 | abc  |
    +---------------------+------+
    1 row in set (0.01 sec)
    mysql> select * from t where f='abc';
    +---------------------+------+
    | id                  | f    |
    +---------------------+------+
    | 2810845392541843463 | abc  |
    +---------------------+------+
    1 row in set (0.00 sec)

Незначительные изменения

  • Теперь вы можете подсвечивать строковые атрибуты.
  • Поддержка SSL и сжатия для SQL интерфейса
  • Поддержка команды mysql клиента status.
  • Репликация теперь может реплицировать внешние файлы (стоп-слова, исключения и т.д.).
  • Оператор фильтра in теперь доступен через HTTP JSON интерфейс.
  • expressions в HTTP JSON.
  • Теперь можно менять rt_mem_limit на лету в RT режиме, т.е. можно делать ALTER ... rt_mem_limit=<new value>.
  • Теперь можно использовать отдельные таблицы символов CJK: chinese, japanese и korean.
  • thread_stack теперь ограничивает максимальный стек потока, а не начальный.
  • Улучшен вывод SHOW THREADS.
  • Отображение прогресса долгого CALL PQ в SHOW THREADS.
  • cpustat, iostat, coredump можно менять во время работы с помощью SET.
  • Реализован SET [GLOBAL] wait_timeout=NUM,

Ломающее изменения:

  • Формат индекса изменён. Индексы, построенные в версии 3.5.0, не могут быть загружены Manticore версий < 3.5.0, но Manticore 3.5.0 понимает старые форматы.
  • INSERT INTO PQ VALUES() (т.е. без указания списка столбцов) ранее ожидал ровно (query, tags) в качестве значений. Теперь изменено на (id,query,tags,filters). id можно установить в 0, если хотите, чтобы он генерировался автоматически.
  • allow_empty=0 теперь значение по умолчанию для подсветки через HTTP JSON интерфейс.
  • Для внешних файлов (стоп-слова, исключения и т.п.) в CREATE TABLE/ALTER TABLE разрешены только абсолютные пути.

Устаревшие возможности:

  • ram_chunks_count переименован в ram_chunk_segments_count в SHOW INDEX STATUS.
  • workers устарел. Сейчас только один режим workers.
  • dist_threads устарел. Все запросы теперь максимально параллельны (ограничены threads и jobs_queue_size).
  • max_children устарел. Используйте threads для установки количества потоков, которые будет использовать Manticore (по умолчанию равно числу ядер CPU).
  • queue_max_length устарел. Вместо него при необходимости используйте jobs_queue_size для тонкой настройки внутренней очереди заданий (по умолчанию неограничена).
  • Все эндпоинты /json/* теперь доступны без /json/, например /search, /insert, /delete, /pq и т.д.
  • Значение field как "полнотекстовое поле" переименовано в "text" в describe.

    3.4.2:

    mysql> describe t;
    +-------+--------+----------------+
    | Field | Type   | Properties     |
    +-------+--------+----------------+
    | id    | bigint |                |
    | f     | field  | indexed stored |
    +-------+--------+----------------+

    3.5.0:

    mysql> describe t;
    +-------+--------+----------------+
    | Field | Type   | Properties     |
    +-------+--------+----------------+
    | id    | bigint |                |
    | f     | text   | indexed stored |
    +-------+--------+----------------+
  • Кириллическая и не отображается в i в таблице символов non_cjk (которая используется по умолчанию), так как это слишком сильно влияло на русские стеммеры и лемматизаторы.
  • read_timeout. Используйте вместо него network_timeout, который контролирует и чтение, и запись.

Пакеты

  • Официальный пакет для Ubuntu Focal 20.04
  • Имя deb-пакета изменено с manticore-bin на manticore

Исправления ошибок:

  1. Issue #351 утечка памяти в searchd
  2. Commit ceab Небольшое чтение за пределами буфера в сниппетах
  3. Commit 1c3e Опасная запись в локальную переменную для аварийных запросов
  4. Commit 26e0 Небольшая утечка памяти сортировщика в тесте 226
  5. Commit d2c7 Большая утечка памяти в тесте 226
  6. Commit 0dd8 Кластер показывает, что узлы синхронизированы, но count(*) показывает разные числа
  7. Commit f1c1 Косметика: дублирование и иногда потеря предупреждающих сообщений в логе
  8. Commit f1c1 Косметика: (null) имя индекса в логе
  9. Commit 359d Невозможно получить более 70M результатов
  10. Commit 19f3 Невозможно вставить правила PQ без указания столбцов
  11. Commit bf68 Ввод документа в индекс в кластере вызывает вводящее в заблуждение сообщение об ошибке
  12. Commit 2cf1 /json/replace и json/update возвращают id в экспоненциальной форме
  13. Issue #324 Обновление скалярных свойств json и mva в одном запросе
  14. Commit d384 hitless_words не работает в RT режиме
  15. Commit 5813 ALTER RECONFIGURE в rt режиме должен быть запрещён
  16. Commit 5813 rt_mem_limit сбрасывается в 128M после перезапуска searchd
  17. highlight() иногда зависает
  18. Commit 7cd8 Не удалось использовать U+код в RT режиме
  19. Commit 2b21 Не удалось использовать подстановочный знак в wordforms в RT режиме
  20. Commit e9d0 Исправлено SHOW CREATE TABLE при нескольких файлах wordform
  21. Коммит fc90 JSON-запрос без "query" вызывает сбой searchd
  22. Официальный docker Manticore не мог индексировать из mysql 8
  23. Коммит 23e0 HTTP /json/insert требует id
  24. Коммит bd67 SHOW CREATE TABLE не работает для PQ
  25. Коммит bd67 CREATE TABLE LIKE некорректно работает для PQ
  26. Коммит 5eac Конец строки в настройках в show index status
  27. Коммит cb15 Пустой заголовок в "highlight" в HTTP JSON ответе
  28. Issue #318 Ошибка infix в CREATE TABLE LIKE
  29. Коммит 9040 RT падает под нагрузкой
  30. cd512c7d Потерян лог сбоя при краше RT disk chunk
  31. Issue #323 Импорт таблицы неудачен и закрывает соединение
  32. Коммит 6275 ALTER reconfigure повреждает индекс PQ
  33. Коммит 9c1d Проблемы с перезагрузкой searchd после изменения типа индекса
  34. Коммит 71e2 Демон падает при импорте таблицы с отсутствующими файлами
  35. Issue #322 Сбой при select с использованием нескольких индексов, group by и ranker = none
  36. Коммит c3f5 HIGHLIGHT() не выделяет в строковых атрибутах
  37. Issue #320 FACET не сортирует по строковому атрибуту
  38. Коммит 4f1a Ошибка при отсутствии каталога данных
  39. Коммит 04f4 access_* не поддерживаются в режиме RT
  40. Коммит 1c06 Плохие JSON объекты в строках: 1. CALL PQ возвращает "Bad JSON objects in strings: 1" когда json превышает некоторое значение.
  41. Коммит 32f9 Несогласованность в режиме RT. В некоторых случаях нельзя удалить индекс, так как он неизвестен, и нельзя создать, так как каталог не пуст.
  42. Issue #319 Сбой при select
  43. Коммит 22a2 max_xmlpipe2_field = 2M выдает предупреждение на поле 2M
  44. Issue #342 Ошибка выполнения условий запроса
  45. Коммит dd8d Простой поиск из 2 терминов находит документ, содержащий только один термин
  46. Коммит 9091 В PQ было невозможно сопоставить json с заглавными буквами в ключах
  47. Коммит 56da Индексатор падает на csv+docstore
  48. Issue #363 Использование [null] в json атрибуте в centos 7 вызывает повреждение вставленных данных
  49. Крупный Issue #345 Записи не вставляются, count() случайно, "replace into" возвращает OK
  50. max_query_time слишком сильно замедляет SELECTы
  51. Issue #352 Сбой связи master-agent на Mac OS
  52. Issue #328 Ошибка при подключении к Manticore с Connector.Net/Mysql 8.0.19
  53. Коммит daa7 Исправлено экранирование \0 и оптимизирована производительность
  54. Коммит 9bc5 Исправлен count distinct vs json
  55. Коммит 4f89 Исправлен сбой при drop table на другом узле
  56. Коммит 952a Исправлены сбои при частом вызове call pq

Версия 3.4.2, 10 апреля 2020

Критические исправления ошибок

  • Коммит 2ffe исправлен сбой индекса RT из старой версии при индексации данных

Версия 3.4.0, 26 марта 2020

Основные изменения

  • сервер работает в 2 режимах: rt-mode и plain-mode
    • rt-mode требует data_dir и отсутствия определения индекса в конфиге
    • в plain-mode индексы определяются в конфиге; data_dir не допускается
  • репликация доступна только в rt-mode

Незначительные изменения

  • charset_table по умолчанию alias non_cjk
  • в rt-mode полнотекстовые поля индексируются и сохраняются по умолчанию
  • полнотекстовые поля в rt-mode переименованы с 'field' в 'text'
  • ALTER RTINDEX переименован в ALTER TABLE
  • TRUNCATE RTINDEX переименован в TRUNCATE TABLE

Функции

  • поля только для хранения
  • SHOW CREATE TABLE, IMPORT TABLE

Улучшения

  • гораздо более быстрый lockless PQ
  • /sql может выполнять любые SQL-запросы в режиме mode=raw
  • alias mysql для протокола mysql41
  • состояние по умолчанию state.sql в data_dir

Исправления ошибок

  • Commit a533 исправлена ошибка аварийного завершения при неправильном синтаксисе поля в highlight()
  • Commit 7fbb исправлена ошибка аварийного завершения сервера при репликации RT индекса с docstore
  • Commit 24a0 исправлена ошибка аварийного завершения при highlight для индекса с опцией infix или prefix и для индекса без включённых сохранённых полей
  • Commit 3465 исправлена ложная ошибка о пустом docstore и поиске dock-id для пустого индекса
  • Commit a707 исправлена #314 команда SQL insert с завершающей точкой с запятой
  • Commit 9562 удалено предупреждение о несоответствии слов запроса
  • Commit b860 исправлены запросы в фрагментах, сегментированных через ICU
  • Commit 5275 исправлена гонка условий при поиске/добавлении в кэш блоков docstore
  • Commit f06e исправлена утечка памяти в docstore
  • Commit a725 исправлена #316 LAST_INSERT_ID возвращает пустое значение при INSERT
  • Commit 1ebd исправлена #317 json/update HTTP endpoint для поддержки массива для MVA и объекта для JSON атрибута
  • Commit e426 исправлена ошибка индексатора при дампе rt без явного id

Версия 3.3.0, 4 февраля 2020

Особенности

  • Параллельный поиск в Real-Time индексах
  • Команда EXPLAIN QUERY
  • конфигурационный файл без определений индексов (альфа-версия)
  • команды CREATE/DROP TABLE (альфа-версия)
  • indexer --print-rt - может читать из источника и выводить INSERT для Real-Time индекса

Улучшения

  • Обновлены стеммеры Snowball до версии 2.0
  • LIKE фильтр для SHOW INDEX STATUS
  • улучшено использование памяти при высоком max_matches
  • SHOW INDEX STATUS добавляет ram_chunks_count для RT индексов
  • безблоковая очередь с приоритетом (lockless PQ)
  • изменён LimitNOFILE на 65536

Исправления ошибок

  • Commit 9c33 добавлена проверка схемы индекса на дублирующиеся атрибуты #293
  • Commit a008 исправлена ошибка аварийного завершения при hitless terms
  • Commit 6895 исправлен loose docstore после ATTACH
  • Commit d6f6 исправлена проблема с docstore в распределённой настройке
  • Commit bce2 заменён FixedHash на OpenHash в сортировщике
  • Commit e0ba исправлены атрибуты с дублирующимися именами в определении индекса
  • Commit ca81 исправлен html_strip в HIGHLIGHT()
  • Commit 493a исправлен макрос passage в HIGHLIGHT()
  • Commit a82d исправлены проблемы с двойным буфером при создании RT индекса с маленьким или большим дисковым чанком
  • Commit a404 исправлено удаление событий для kqueue
  • Commit 8bea исправлено сохранение дискового чанка для большого значения rt_mem_limit RT индекса
  • Commit 8707 исправлен переполнение float при индексации
  • Commit a564 теперь вставка документа с отрицательным ID в RT индекс завершается ошибкой
  • Commit bbeb исправлена ошибка аварийного завершения сервера при использовании ranker fieldmask
  • Commit 3809 исправлена ошибка аварийного завершения при использовании кэша запросов
  • Commit dc2a исправлена ошибка аварийного завершения при использовании RAM сегментов RT индекса с параллельными вставками

Версия 3.2.2, 19 декабря 2019

Особенности

  • Автоинкремент ID для RT индексов
  • Поддержка подсветки для docstore через новую функцию HIGHLIGHT(), доступную также в HTTP API
  • SNIPPET() может использовать специальную функцию QUERY(), которая возвращает текущий MATCH запрос
  • новая опция field_separator для функций подсветки

Улучшения и изменения

  • ленивое извлечение сохранённых полей для удалённых узлов (может значительно повысить производительность)
  • строки и выражения больше не нарушают оптимизации multi-query и FACET
  • сборка для RHEL/CentOS 8 теперь использует mysql libclient из mariadb-connector-c-devel
  • файл данных ICU теперь поставляется с пакетами, icu_data_dir удалён
  • файлы служб systemd включают политику 'Restart=on-failure'
  • indextool теперь может проверять real-time индексы онлайн
  • конфигурация по умолчанию теперь /etc/manticoresearch/manticore.conf
  • сервис на RHEL/CentOS переименован в 'manticore' с 'searchd'
  • удалены опции query_mode и exact_phrase для сниппетов

Исправления ошибок

  • Commit 6ae4 исправлен сбой при выполнении SELECT-запроса через HTTP-интерфейс
  • Commit 5957 исправлено сохранение дисковых чанков RT-индекса без пометки некоторых документов как удалённых
  • Commit e861 исправлен сбой при поиске по нескольким индексам или нескольким запросам с dist_threads
  • Commit 4409 исправлен сбой при генерации инфикса для длинных терминов с широкими utf8-кодами
  • Commit 5fd5 исправлена гонка при добавлении сокета в IOCP
  • Commit cf10 исправлена проблема булевых запросов с json-списком select
  • Commit 996d исправлена проверка indextool для сообщения о неправильном смещении skiplist, проверка поиска doc2row
  • Commit 6e3f исправлено создание индексатором плохого индекса с отрицательным смещением skiplist на больших данных
  • Commit faed исправлено преобразование JSON только числовых в строку и преобразование JSON-строки в число в выражениях
  • Commit 5331 исправлен выход indextool с кодом ошибки при установке нескольких команд в командной строке
  • Commit 7955 исправлена ошибка #275 binlog в неверном состоянии при ошибке "нет места на диске"
  • Commit 2284 исправлена ошибка #279 сбоя при фильтре IN для JSON-атрибута
  • Commit ce2e исправлена ошибка #281 неправильного вызова закрытия канала
  • Commit 5355 исправлено зависание сервера при CALL PQ с рекурсивным JSON-атрибутом, закодированным как строка
  • Commit a5fc исправлено продвижение за пределы конца doclist в узле multiand
  • Commit a362 исправлено получение публичной информации о потоке
  • Commit f8d2 исправлены блокировки кэша docstore

Версия 3.2.0, 17 октября 2019

Возможности

  • Хранение документов
  • новые директивы stored_fields, docstore_cache_size, docstore_block_size, docstore_compression, docstore_compression_level

Улучшения и изменения

  • улучшена поддержка SSL
  • обновлена встроенная кодировка non_cjk
  • отключено логирование UPDATE/DELETE-запросов как SELECT в журнал запросов
  • пакеты для RHEL/CentOS 8

Исправления ошибок

  • Commit 301a исправлен сбой при замене документа в дисковом чанке RT-индекса
  • Commit 46c1 исправлена ошибка #269 LIMIT N OFFSET M
  • Commit 92a4 исправлены DELETE-запросы с явно заданным id или списком id для пропуска поиска
  • Commit 8ca7 исправлен неправильный индекс после удаления события в netloop у poller windowspoll
  • Commit 6036 исправлено округление float в JSON через HTTP
  • Commit 62f6 исправлены удалённые сниппеты для проверки пустого пути в первую очередь; исправлены тесты для Windows
  • Commit aba2 исправлена перезагрузка конфигурации для работы на Windows так же, как на Linux
  • Commit 6b8c исправлена ошибка #194 PQ для работы с морфологией и стеммерами
  • Commit 174d исправлено управление устаревшими сегментами RT

Версия 3.1.2, 22 августа 2019

Возможности и улучшения

  • Экспериментальная поддержка SSL для HTTP API
  • фильтр по полю для CALL KEYWORDS
  • max_matches для /json/search
  • автоматический подбор размера по умолчанию для Galera gcache.size
  • улучшена поддержка FreeBSD

Исправления ошибок

  • Commit 0a1a исправлена репликация RT-индекса в узел, где существует такой же RT-индекс с другим путём
  • Commit 4adc исправлено переназначение flush для индексов без активности
  • Commit d6c0 улучшено переназначение сброса RT/PQ индексов
  • Commit d0a7 исправлена ошибка #250 опции index_field_lengths для TSV и CSV piped источников
  • Commit 1266 исправлена неправильная отчетность indextool для проверки блочного индекса на пустом индексе
  • Commit 553c исправлен пустой список select в журнале запросов Manticore SQL
  • Commit 56c8 исправлен ответ indexer -h/--help

Версия 3.1.0, 16 июля 2019

Функции и улучшения

  • репликация для RealTime индексов
  • ICU токенизатор для китайского
  • новая опция морфологии icu_chinese
  • новая директива icu_data_dir
  • транзакции с несколькими операторами для репликации
  • LAST_INSERT_ID() и @session.last_insert_id
  • LIKE 'pattern' для SHOW VARIABLES
  • Вставка нескольких документов для percolate индексов
  • Добавлены парсеры времени для конфигурации
  • внутренний менеджер задач
  • mlock для компонентов списков документов и попаданий
  • путь к сниппетам jail

Удаления

  • поддержка библиотеки RLP удалена в пользу ICU; все директивы rlp* удалены
  • обновление ID документа с помощью UPDATE отключено

Исправления ошибок

  • Commit f047 исправлены дефекты в concat и group_concat
  • Commit b081 исправлен тип атрибута uid запроса в percolate индексе на BIGINT
  • Commit 4cd8 не аварийно завершать работу при неудаче предварительного выделения нового дискового чанка
  • Commit 1a55 добавлен отсутствующий тип данных timestamp в ALTER
  • Commit f3a8 исправлен сбой при неправильном чтении mmap
  • Commit 4475 исправлен хэш блокировки кластеров в репликации
  • Commit ff47 исправлена утечка провайдеров в репликации
  • Commit 58dc исправлена ошибка #246 undefined sigmask в indexer
  • Commit 3dd8 исправлена гонка в отчётах netloop
  • Commit a02a нулевой разрыв для балансировщика стратегий HA

Версия 3.0.2, 31 мая 2019

Улучшения

  • добавлены mmap ридеры для списков документов и попаданий
  • ответ HTTP эндпоинта /sql теперь такой же, как у /json/search
  • новые директивы access_plain_attrs, access_blob_attrs, access_doclists, access_hitlists
  • новая директива server_id для настроек репликации

Удаления

  • удалён HTTP эндпоинт /search

Устаревшие возможности

  • read_buffer, ondisk_attrs, ondisk_attrs_default, mlock заменены директивами access_*

Исправления ошибок

  • Commit 849c разрешены имена атрибутов, начинающиеся с цифр, в списке select
  • Commit 48e6 исправлены MVAs в UDF, исправлено алиасинг MVA
  • Commit 0555 исправлен сбой #187 при использовании запроса с SENTENCE
  • Commit 93bf исправлена поддержка #143 скобок () вокруг MATCH()
  • Commit 599e исправлено сохранение состояния кластера при ALTER cluster
  • Commit 230c исправлен сбой сервера при ALTER index с blob атрибутами
  • Commit 5802 исправлен #196 фильтр по id
  • Commit 25d2 отключён поиск по шаблонным индексам
  • Commit 2a30 исправлен тип колонки id на обычный bigint в ответе SQL

Версия 3.0.0, 6 мая 2019

Функции и улучшения

  • Новое хранилище индексов. Нескалярные атрибуты больше не ограничены размером 4 ГБ на индекс
  • директива attr_update_reserve
  • Строки, JSON и MVAs можно обновлять с помощью UPDATE
  • killlists применяются при загрузке индекса
  • директива killlist_target
  • ускорение многократных AND поисков
  • улучшенная средняя производительность и использование ОЗУ
  • инструмент конвертации для обновления индексов, созданных в 2.x
  • функция CONCAT()
  • JOIN CLUSTER cluster AT 'nodeaddress:port'
  • ALTER CLUSTER posts UPDATE nodes
  • директива node_address
  • список узлов выводится в SHOW STATUS

Изменения в поведении

  • в случае индексов с killlists сервер не вращает индексы в порядке, определённом в конфиге, а следует цепочке целей killlist
  • порядок индексов в поиске больше не определяет порядок применения killlists
  • ID документов теперь знаковые большие целые числа

Удалённые директивы

  • docinfo (теперь всегда extern), inplace_docinfo_gap, mva_updates_pool

Версия 2.8.2 GA, 2 апреля 2019

Функции и улучшения

  • Репликация Galera для percolate индексов
  • OPTION morphology

Заметки по компиляции

Минимальная версия Cmake теперь 3.13. Для компиляции требуются boost и libssl разработческие библиотеки.

Исправления ошибок

  • Commit 6967 исправлен сбой при множественных звёздочках в списке select для запроса в множество распределённых индексов
  • Commit 36df исправлена #177 большая пакетная передача через интерфейс Manticore SQL
  • Commit 5793 исправлен #170 сбой сервера при оптимизации RT с обновлённым MVA
  • Commit edb2 исправлен сбой сервера при удалении binlog из-за удаления RT индекса после перезагрузки конфигурации по SIGHUP
  • Commit bd3e исправлены полезные нагрузки плагина аутентификации mysql handshake
  • Commit 6a21 исправлен #172 параметр phrase_boundary в RT индексе
  • Commit 3562 исправлен #168 дедлок при ATTACH индекса к самому себе
  • Commit 250b исправлено сохранение пустых метаданных binlog после сбоя сервера
  • Commit 4aa6 исправлен сбой сервера из-за строки в сортировщике из RT индекса с дисковыми чанками

Версия 2.8.1 GA, 6 марта 2019

Функции и улучшения

  • SUBSTRING_INDEX()
  • Поддержка SENTENCE и PARAGRAPH для percolate запросов
  • systemd генератор для Debian/Ubuntu; также добавлен LimitCORE для разрешения дампов ядра

Исправления ошибок

  • Commit 84fe исправлен сбой сервера при режиме match all и пустом полнотекстовом запросе
  • Commit daa8 исправлен сбой при удалении статической строки
  • Commit 2207 исправлен код выхода при ошибке indextool с FATAL
  • Commit 0721 исправлен #109 отсутствие совпадений для префиксов из-за неправильной проверки точной формы
  • Commit 8af8 исправлен #161 перезагрузки настроек конфигурации для RT индексов
  • Commit e2d5 исправлен сбой сервера при доступе к большой JSON строке
  • Commit 75cd исправлено поле PQ в JSON документе, изменённое индексным стриппером, вызывающее неправильное совпадение с родственным полем
  • Commit e2f7 исправлен сбой сервера при разборе JSON в сборках RHEL7
  • Commit 3a25 исправлен сбой при unescaping JSON, когда слэш находится на краю
  • Commit be9f исправлена опция 'skip_empty' для пропуска пустых документов без предупреждения, что они не являются валидным JSON
  • Commit 266e исправлен #140 вывод 8 цифр для чисел с плавающей точкой, когда 6 недостаточно для точности
  • Commit 3f6d исправлено создание пустого jsonobj
  • Commit f3c7 исправлен #160 вывод пустого mva как NULL вместо пустой строки
  • Commit 0afa исправлен сбой сборки без pthread_getname_np
  • Commit 9405 исправлен сбой при завершении работы сервера с thread_pool воркерами

Версия 2.8.0 GA, 28 января 2019

Улучшения

  • Распределённые индексы для percolate индексов
  • CALL PQ новые опции и изменения:
    • skip_bad_json
    • mode (sparsed/sharded)
    • JSON документы могут передаваться как JSON массив
    • shift
    • Имена колонок 'UID', 'Documents', 'Query', 'Tags', 'Filters' переименованы в 'id', 'documents', 'query', 'tags', 'filters'
  • DESCRIBE pq TABLE
  • SELECT FROM pq WHERE UID больше не поддерживается, используйте 'id'
  • SELECT по pq индексам теперь наравне с обычными индексами (например, можно фильтровать правила через REGEX())
  • ANY/ALL можно использовать для PQ тегов
  • выражения имеют авто-преобразование для JSON полей, не требуя явного кастинга
  • встроенная таблица символов 'non_cjk' и ngram_chars 'cjk'
  • встроенные коллекции стоп-слов для 50 языков
  • несколько файлов в объявлении стоп-слов могут быть разделены запятой
  • CALL PQ может принимать JSON массив документов

Исправления ошибок

  • Commit a4e1 исправлена утечка, связанная с csjon
  • Commit 28d8 исправлен сбой из-за отсутствующего значения в json
  • Commit bf4e исправлено сохранение пустого meta для RT индекса
  • Commit 33b4 исправлен потерянный флаг формы (exact) для последовательности лемматизатора
  • Commit 6b95 исправлено использование saturate вместо переполнения для строковых атрибутов > 4M
  • Commit 6214 исправлен сбой сервера на SIGHUP с отключённым индексом
  • Commit 3f7e исправлен сбой сервера при одновременных командах статуса сессии API
  • Commit cd9e исправлен сбой сервера при удалении запроса к RT индексу с фильтрами по полям
  • Commit 9376 исправлен сбой сервера при CALL PQ к распределённому индексу с пустым документом
  • Commit 8868 исправлено обрезание сообщения об ошибке Manticore SQL длиной более 512 символов
  • Commit de9d исправлен сбой при сохранении percolate индекса без binlog
  • Commit 2b21 исправлен неработающий http интерфейс в OSX
  • Commit e92c исправлено ложное сообщение об ошибке indextool при проверке MVA
  • Commit 238b исправлена блокировка записи при FLUSH RTINDEX, чтобы не блокировать весь индекс во время сохранения и при регулярном flush из rt_flush_period
  • Commit c26a исправлено зависание ALTER percolate индекса при ожидании загрузки поиска
  • Commit 9ee5 исправлено max_children для использования значения по умолчанию количества потоков thread_pool при значении 0
  • Commit 5138 исправлена ошибка при индексации данных в индекс с плагином index_token_filter вместе со стоп-словами и stopword_step=0
  • Commit 2add исправлен сбой при отсутствии lemmatizer_base при использовании aot лемматизаторов в определениях индекса

Версия 2.7.5 GA, 4 декабря 2018

Улучшения

  • Функция REGEX
  • limit/offset для поиска через json API
  • точки профилировщика для qcache

Исправления ошибок

  • Commit eb3c исправлен сбой сервера на FACET с несколькими атрибутами широких типов
  • Commit d915 исправлен неявный group by в основном списке select запроса FACET
  • Commit 5c25 исправлен сбой при запросе с GROUP N BY
  • Commit 85d3 исправлена взаимная блокировка при обработке сбоя в операциях с памятью
  • Commit 8516 исправлено потребление памяти indextool во время проверки
  • Commit 58fb удалён ненужный include gmock, так как upstream решил эту проблему

Версия 2.7.4 GA, 1 ноября 2018

Улучшения

  • SHOW THREADS для удалённых распределённых индексов выводит исходный запрос вместо вызова API
  • SHOW THREADS новая опция format=sphinxql выводит все запросы в формате SQL
  • SHOW PROFILE выводит дополнительный этап clone_attrs

Исправления ошибок

  • Commit 4f15 исправлен сбой сборки с libc без malloc_stats, malloc_trim
  • Commit f974 исправлены специальные символы внутри слов для результата CALL KEYWORDS
  • Commit 0920 исправлен сломанный CALL KEYWORDS к распределённому индексу через API или к удалённому агенту
  • Commit fd68 исправлена передача distributed index agent_query_timeout агентам как max_query_time
  • Commit 4ffa исправлен счётчик общих документов на дисковом чанке, который влиялся командой OPTIMIZE и ломал расчёт веса
  • Commit dcaf исправлены множественные хвостовые попадания в RT индекс из blended
  • Commit eee3 исправлена взаимная блокировка при ротации

Версия 2.7.3 GA, 26 сентября 2018

Улучшения

  • опция sort_mode для CALL KEYWORDS
  • DEBUG на VIP соединении может выполнять 'crash ' для намеренного действия SIGEGV на сервере
  • DEBUG может выполнять 'malloc_stats' для дампа статистики malloc в searchd.log, 'malloc_trim' для выполнения malloc_trim()
  • улучшенный backtrace, если gdb присутствует в системе

Исправления ошибок

  • Commit 0f3c исправлен сбой или ошибка rename на Windows
  • Commit 1455 исправлены сбои сервера на 32-битных системах
  • Commit ad37 исправлен сбой или зависание сервера на пустом выражении SNIPPET
  • Commit b36d исправлена сломанная непрогрессивная оптимизация и исправлена прогрессивная оптимизация, чтобы не создавать kill-list для самого старого дискового чанка
  • Commit 34b0 исправлен неправильный ответ queue_max_length для SQL и API в режиме рабочего потока пула потоков
  • Commit ae4b исправлен сбой при добавлении full-scan запроса к PQ индексу с установленными опциями regexp или rlp
  • Commit f80f исправлен сбой при последовательных вызовах PQ
  • Commit 9742 рефакторинг AcquireAccum
  • Commit 39e5 исправлена утечка памяти после вызова pq
  • Commit 21bc косметический рефакторинг (стиль c++11 c-trs, значения по умолчанию, nullptr)
  • Commit 2d69 исправлена утечка памяти при попытке вставить дубликат в PQ индекс
  • Commit 5ed9 исправлен сбой на JSON поле IN с большими значениями
  • Commit 4a52 исправлен сбой сервера на CALL KEYWORDS запросе к RT индексу с установленным лимитом расширения
  • Commit 5526 исправлен неверный фильтр в запросе PQ matches;
  • Commit 204f введён небольшой аллокатор объектов для ptr атрибутов
  • Commit 2545 рефакторинг ISphFieldFilter в версию с подсчётом ссылок
  • Commit 1366 исправлен UB/SIGSEGV при использовании strtod на неоконченных строках
  • Commit 94bc исправлена утечка памяти при обработке json resultset
  • Commit e78e исправлен выход за пределы блока памяти при применении добавления атрибута
  • Commit fad5 рефакторинг CSphDict для версии с подсчётом ссылок
  • Commit fd84 исправлена утечка внутреннего типа AOT наружу
  • Commit 5ee7 исправлена утечка памяти при управлении токенизатором
  • Commit 116c исправлена утечка памяти в grouper
  • Commit 56fd специальное освобождение/копирование для динамических указателей в matches (утечка памяти в grouper)
  • Commit b1fc исправлена утечка памяти динамических строк для RT
  • Commit 517b рефакторинг grouper
  • Commit b1fc небольшой рефакторинг (c++11 c-trs, некоторые переработки формата)
  • Commit 7034 рефакторинг ISphMatchComparator в версию с подсчётом ссылок
  • Commit b1fc приватизация клонировщика
  • Commit efbc упрощение native little-endian для MVA_UPSIZE, DOCINFO2ID_T, DOCINFOSETID
  • Commit 6da0 добавлена поддержка valgrind в ubertests
  • Commit 1d17 исправлен сбой из-за гонки флага 'success' на соединении
  • Commit 5a09 переключение epoll на edge-triggered режим
  • Commit 5d52 исправлен оператор IN в выражении с форматированием как в фильтре
  • Commit bd8b исправлен сбой в RT индексе при коммите документа с большим docid
  • Commit ce65 исправлены опции без аргументов в indextool
  • Commit 08c9 исправлена утечка памяти расширенного ключевого слова
  • Commit 30c7 исправлена утечка памяти json grouper
  • Commit 6023 исправлена утечка глобальных пользовательских переменных
  • Commit 7c13 исправлена утечка динамических строк при раннем отклонении совпадений
  • Commit 9154 исправлена утечка при length()
  • Commit 43fc исправлена утечка памяти из-за strdup() в парсере
  • Commit 71ff переработан парсер выражений для точного отслеживания refcounts

Версия 2.7.2 GA, 27 августа 2018

Улучшения

  • совместимость с клиентами MySQL 8
  • TRUNCATE С ПЕРЕКОНФИГУРАЦИЕЙ
  • удалён счётчик памяти в SHOW STATUS для RT индексов
  • глобальный кэш мультиагентов
  • улучшенный IOCP на Windows
  • VIP соединения для HTTP протокола
  • Manticore SQL команда DEBUG, которая может выполнять различные подкоманды
  • shutdown_token - SHA1 хэш пароля, необходимый для вызова shutdown через команду DEBUG
  • новые статистики в SHOW AGENT STATUS (_ping, _has_perspool, _need_resolve)
  • опция --verbose у indexer теперь принимает [debugvv] для вывода отладочных сообщений

Исправления ошибок

  • Commit 3900 удалён wlock при оптимизации
  • Commit 4c33 исправлен wlock при перезагрузке настроек индекса
  • Commit b5ea исправлена утечка памяти при запросе с JSON фильтром
  • Commit 930e исправлены пустые документы в PQ наборе результатов
  • Commit 53de исправлена путаница задач из-за удалённой
  • Commit cad9 исправлен неправильный подсчёт удалённого хоста
  • Commit 9000 исправлена утечка памяти разобранных дескрипторов агентов
  • Commit 978d исправлена утечка в поиске
  • Commit 0193 косметические изменения в явных/встроенных c-trs, использовании override/final
  • Commit 943e исправлена утечка json в локальной/удалённой схеме
  • Commit 02db исправлена утечка json выражения сортировки столбца в локальной/удалённой схеме
  • Commit c74d исправлена утечка константного псевдонима
  • Commit 6e5b исправлена утечка потока preread
  • Commit 39c7 исправлена зависание при выходе из-за зависшего ожидания в netloop
  • Commit adaf исправлено зависание поведения 'ping' при смене HA агента на обычный хост
  • Commit 32c4 отдельный сборщик мусора для хранилища dashboard
  • Commit 511a исправлена фиксация ref-counted ptr
  • Commit 32c4 исправлен сбой indextool при несуществующем индексе
  • Commit 156e исправлено имя вывода превышающего атрибута/поля в xmlpipe индексации
  • Commit cdac исправлено значение индексера по умолчанию, если в конфиге нет секции indexer
  • Commit e61e исправлены неправильные встроенные стоп-слова в дисковом чанке RT индекса после перезапуска сервера
  • Commit 5fba исправлен пропуск фантомных (уже закрытых, но не окончательно удалённых из poller) соединений
  • Commit f22a исправлены смешанные (осиротевшие) сетевые задачи
  • Commit 4689 исправлен сбой при чтении действия после записи
  • Commit 03f9 исправлены сбои searchd при запуске тестов на Windows
  • Commit e925 исправлена обработка кода EINPROGRESS при обычном connect()
  • Commit 248b исправлены тайм-ауты соединения при работе с TFO

Version 2.7.1 GA, 4 July 2018

Improvements

  • улучшена производительность подстановочных знаков при сопоставлении нескольких документов в PQ
  • поддержка fullscan-запросов в PQ
  • поддержка атрибутов MVA в PQ
  • поддержка regexp и RLP для percolate индексов

Bugfixes

  • Commit 6885 исправлена потеря строки запроса
  • Commit 0f17 исправлена пустая информация в операторе SHOW THREADS
  • Commit 53fa исправлен сбой при сопоставлении с оператором NOTNEAR
  • Commit 2602 исправлено сообщение об ошибке при неверном фильтре для удаления в PQ

Version 2.7.0 GA, 11 June 2018

Improvements

  • уменьшено количество системных вызовов для снижения влияния патчей Meltdown и Spectre
  • внутренний переписанный механизм управления локальными индексами
  • рефакторинг удалённых сниппетов
  • полная перезагрузка конфигурации
  • все соединения узлов теперь независимы
  • улучшения протокола
  • коммуникация в Windows переключена с wsapoll на IO completion ports
  • TFO может использоваться для связи между мастером и узлами
  • SHOW STATUS теперь выводит версию сервера и mysql_version_string
  • добавлена опция docs_id для документов, вызываемых в CALL PQ.
  • фильтр percolate-запросов теперь может содержать выражения
  • распределённые индексы могут работать с FEDERATED
  • фиктивные SHOW NAMES COLLATE и SET wait_timeout (для лучшей совместимости с ProxySQL)

Bugfixes

  • Commit 5bcf исправлено добавление неравенства к тегам PQ
  • Commit 9ebc исправлено добавление поля id документа в JSON документ CALL PQ
  • Commit 8ae0 исправлены обработчики flush для PQ индекса
  • Commit c24b исправлена фильтрация PQ по JSON и строковым атрибутам
  • Commit 1b8b исправлен разбор пустой JSON строки
  • Commit 1ad8 исправлен сбой при мультизапросе с OR фильтрами
  • Commit 69b8 исправлен indextool для использования общей секции конфигурации (опция lemmatizer_base) для команд (dumpheader)
  • Commit 6dbe исправлена пустая строка в результирующем наборе и фильтре
  • Commit 39c4 исправлены отрицательные значения id документов
  • Commit 266b исправлена длина обрезки слова для очень длинных индексируемых слов
  • Commit 4782 исправлено сопоставление нескольких документов для wildcard-запросов в PQ

Version 2.6.4 GA, 3 May 2018

Features and improvements

  • поддержка MySQL FEDERATED движка support
  • пакеты MySQL теперь возвращают флаг SERVER_STATUS_AUTOCOMMIT, добавляя совместимость с ProxySQL
  • listen_tfo - включение TCP Fast Open для всех слушателей
  • indexer --dumpheader теперь может также выгружать заголовок RT из .meta файла
  • скрипт сборки cmake для Ubuntu Bionic

Bugfixes

  • Commit 355b исправлены недействительные записи кэша запросов для RT индекса;
  • Commit 546e исправлены настройки индекса, которые терялись после бесшовной ротации
  • Commit 0c45 исправлены установки длины infix и prefix; добавлено предупреждение о неподдерживаемой длине infix
  • Commit 8054 исправлен порядок автофлеша RT индексов
  • Commit 705d исправлены проблемы схемы результирующего набора для индекса с несколькими атрибутами и запросами к нескольким индексам
  • Commit b0ba исправлена потеря некоторых хитов при пакетной вставке с дубликатами документов
  • Commit 4510 исправлена ошибка optimize при слиянии дисковых чанков RT индекса с большим количеством документов

Version 2.6.3 GA, 28 March 2018

Improvements

  • jemalloc при компиляции. Если jemalloc присутствует в системе, его можно включить с помощью флага cmake -DUSE_JEMALLOC=1

Bugfixes

  • Commit 85a6 исправлена опция log expand_keywords в журнале запросов Manticore SQL
  • Commit caaa исправлен HTTP интерфейс для корректной обработки запросов большого размера
  • Commit e386 исправлен сбой сервера при DELETE в RT индексе с включённым index_field_lengths
  • Commit cd53 исправлена опция cpustats для searchd cli для работы с неподдерживаемыми системами
  • Commit 8740 исправлено сопоставление подстрок utf8 с определёнными минимальными длинами

Версия 2.6.2 GA, 23 февраля 2018

Улучшения

  • улучшена производительность Percolate Queries при использовании оператора NOT и для пакетных документов.
  • percolate_query_call теперь может использовать несколько потоков в зависимости от dist_threads
  • новый оператор полнотекстового сопоставления NOTNEAR/N
  • LIMIT для SELECT на перколяторных индексах
  • expand_keywords теперь принимает 'start','exact' (где 'star,exact' имеет тот же эффект, что и '1')
  • ranged-main-query для joined fields, использующий ranged query, определённый sql_query_range

Исправления ошибок

  • Commit 72dc исправлен сбой при поиске в ram сегментах; устранена взаимная блокировка при сохранении дискового чанка с двойным буфером; устранена взаимная блокировка при сохранении дискового чанка во время оптимизации
  • Commit 3613 исправлен сбой индексатора при xml embedded schema с пустым именем атрибута
  • Commit 48d7 исправлено ошибочное удаление не принадлежащего pid-файла
  • Commit a556 исправлены иногда оставшиеся сиротские fifo в временной папке
  • Commit 2376 исправлен пустой результат FACET с неверной NULL строкой
  • Commit 4842 исправлена сломанная блокировка индекса при запуске сервера как службы Windows
  • Commit be35 исправлены неверные библиотеки iconv на mac os
  • Commit 8374 исправлен неверный count(*)

Версия 2.6.1 GA, 26 января 2018

Улучшения

  • agent_retry_count для агентов с зеркалами теперь даёт значение количества повторных попыток на зеркало, а не на агента, общее количество попыток на агента равно agent_retry_count*mirrors.
  • agent_retry_count теперь можно задавать для каждого индекса, переопределяя глобальное значение. Добавлен псевдоним mirror_retry_count.
  • retry_count теперь можно указать в определении агента, и значение представляет количество повторных попыток на агента
  • Percolate Queries теперь доступны в HTTP JSON API по адресу /json/pq.
  • Добавлены опции -h и -v (помощь и версия) для исполняемых файлов
  • Поддержка morphology_skip_fields для Real-Time индексов

Исправления ошибок

  • Commit a40b исправлен ranged-main-query для корректной работы с sql_range_step при использовании в MVA поле
  • Commit f2f5 исправлена проблема с зависанием системного цикла blackhole и отключением агентов blackhole
  • Commit 84e1 исправлен идентификатор запроса для согласованности, исправлены дублирующиеся id для сохранённых запросов
  • Commit 1948 исправлен сбой сервера при завершении работы из различных состояний
  • Commit 9a70 Commit 3495 исправлены тайм-ауты при долгих запросах
  • Commit 3359 переработан сетевой опрос master-agent на системах с kqueue (Mac OS X, BSD).

Версия 2.6.0, 29 декабря 2017

Функции и улучшения

Исправления ошибок

  • Коммит 0cfa исправил сбой в debug-сборке сервера (и возможно UB в релизе) при сборке с rlp
  • Коммит 3242 исправил оптимизацию RT индекса с включенной опцией progressive, которая объединяла kill-листы в неправильном порядке
  • Коммит ac0e незначительный сбой на mac
  • множество мелких исправлений после тщательного статического анализа кода
  • другие мелкие исправления ошибок

Обновление

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

Версия 2.5.1, 23 ноября 2017

Функции и улучшения

  • JSON-запросы по HTTP API протоколу. Поддерживаются операции поиска, вставки, обновления, удаления, замены. Команды манипуляции данными также могут выполняться пакетно, однако есть некоторые ограничения, так как MVA и JSON атрибуты не могут использоваться для вставок, замен или обновлений.
  • Команда RELOAD INDEXES
  • Команда FLUSH LOGS
  • SHOW THREADS может показывать прогресс оптимизации, ротации или сбросов.
  • GROUP N BY корректно работает с MVA атрибутами
  • blackhole агенты теперь запускаются в отдельном потоке, чтобы больше не влиять на запросы мастера
  • реализован подсчет ссылок на индексы, чтобы избежать задержек, вызванных ротациями и высокой нагрузкой
  • реализован SHA1 хеш, пока не доступен извне
  • исправления для компиляции на FreeBSD, macOS и Alpine

Исправления ошибок

  • Коммит 9897 регрессия фильтра с блочным индексом
  • Коммит b1c3 переименование PAGE_SIZE -> ARENA_PAGE_SIZE для совместимости с musl
  • Коммит f213 отключение googletests для cmake < 3.1.0
  • Коммит f30e ошибка привязки сокета при перезапуске сервера
  • Коммит 0807 исправлен сбой сервера при завершении работы
  • Коммит 3e3a исправлен show threads для системного blackhole потока
  • Коммит 262c переработана проверка конфигурации iconv, исправлена сборка на FreeBSD и Darwin

Версия 2.4.1 GA, 16 октября 2017

Функции и улучшения

  • Оператор OR в WHERE между фильтрами атрибутов
  • Режим обслуживания ( SET MAINTENANCE=1)
  • CALL KEYWORDS доступны на распределённых индексах
  • Группировка в UTC
  • query_log_mode для пользовательских прав на файлы логов
  • Веса полей могут быть нулевыми или отрицательными
  • max_query_time теперь может влиять на полные сканирования
  • добавлены net_wait_tm, net_throttle_accept и net_throttle_action для тонкой настройки сетевого потока (в случае workers=thread_pool)
  • COUNT DISTINCT работает с фасетными поисками
  • IN можно использовать с JSON массивами чисел с плавающей точкой
  • оптимизация мультизапросов больше не ломается из-за целочисленных/числовых выражений
  • SHOW META показывает строку multiplier при использовании оптимизации мультизапросов

Компиляция

Manticore Search собирается с помощью cmake, минимальная версия gcc для компиляции — 4.7.2.

Папки и сервис

  • Manticore Search запускается от пользователя manticore.
  • Папка данных по умолчанию теперь /var/lib/manticore/.
  • Папка логов по умолчанию теперь /var/log/manticore/.
  • Папка для pid по умолчанию теперь /var/run/manticore/.

Исправления ошибок

  • Коммит a58c исправлена команда SHOW COLLATION, которая ломала java-коннектор
  • Коммит 631c исправлены сбои при обработке распределённых индексов; добавлены блокировки для хэша распределённого индекса; удалены операторы перемещения и копирования из агента
  • Коммит 942b исправлены сбои при обработке распределённых индексов из-за параллельных переподключений
  • Коммит e5c1 исправлен сбой обработчика сбоев при записи запроса в лог сервера
  • Коммит 4a4b исправлен сбой с pooled атрибутами в мультизапросах
  • Коммит 3873 уменьшен размер core-файла за счёт исключения страниц индекса
  • Коммит 11e6 исправлены сбои searchd при запуске при указании неверных агентов
  • Коммит 4ca6 исправлена ошибка индексатора в sql_query_killlist запросе
  • Коммит 123a исправлена работа fold_lemmas=1 с подсчётом хитов
  • Коммит cb99 исправлено непоследовательное поведение html_strip
  • Коммит e406 исправлена потеря новых настроек при оптимизации rt индекса; исправлены утечки блокировок при оптимизации с опцией sync;
  • Коммит 86ae исправлена обработка ошибочных мультизапросов
  • Commit 2645 исправлена зависимость результата от порядка мультизапроса
  • Commit 7239 исправлен сбой сервера при мультизапросе с некорректным запросом
  • Commit f353 исправлен переход с разделяемой блокировки на эксклюзивную
  • Commit 3754 исправлен сбой сервера для запроса без индексов
  • Commit 29f3 исправлена взаимная блокировка сервера

Версия 2.3.3, 06 июля 2017

  • Брендинг Manticore
Last modified: December 07, 2025