В Manticore мы собираем различные анонимные метрики для улучшения качества наших продуктов, включая Manticore Search. Анализируя эти данные, мы можем не только повысить общую производительность нашего продукта, но и определить, какие функции стоит приоритетно развивать, чтобы предоставить пользователям ещё большую ценность. Система телеметрии работает в отдельном потоке в неблокирующем режиме, делая снимки и отправляя их раз в несколько минут.
Мы серьёзно относимся к вашей конфиденциальности, и вы можете быть уверены, что все метрики полностью анонимны и никакая чувствительная информация не передаётся. Однако, если вы всё же хотите отключить телеметрию, у вас есть такая возможность:
- Установить переменную окружения
TELEMETRY=0 - Или установить
telemetry = 0в секцииsearchdвашего конфигурационного файла
Ниже приведён список всех собираемых метрик:
Символ ⏱️ указывает, что метрика собирается периодически, в отличие от других метрик, которые собираются на основе конкретных событий.
| Метрика | Описание |
|---|---|
invocation |
Отправляется при запуске Manticore Buddy |
plugin_* |
Указывает, что плагин с данным именем был выполнен, например, plugin_backup для выполнения резервного копирования |
command_* |
⏱️ Все метрики с этим префиксом отправляются из запроса show status демона Manticore |
uptime |
⏱️ Время работы демона Manticore Search |
workers_total |
⏱️ Количество воркеров, используемых Manticore |
cluster_count |
⏱️ Сколько кластеров обрабатывает этот узел |
cluster_size |
⏱️ Сколько узлов во всех кластерах |
table_*_count |
⏱️ Количество созданных таблиц каждого типа: plain, percolate, rt или distributed |
*_field_*_count |
⏱️ Количество каждого типа полей для таблиц типов rt и percolate |
columnar |
⏱️ Указывает, что использовалась библиотека Columnar |
columnar_field_count |
⏱️ Количество полей, использующих библиотеку Columnar |
Инструмент резервного копирования Manticore по умолчанию отправляет анонимные метрики на сервер метрик Manticore для помощи в улучшении продукта. Если вы не хотите отправлять телеметрию, вы можете отключить её, запустив инструмент с флагом --disable-metric или установив переменную окружения TELEMETRY=0.
Ниже приведён список всех собираемых метрик:
| Метрика | Описание |
|---|---|
invocation |
Отправляется при запуске резервного копирования |
failed |
Отправляется в случае неудачного резервного копирования |
done |
Отправляется при успешном резервном копировании/восстановлении |
arg_* |
Аргументы, использованные для запуска инструмента (исключая имена индексов и т.п.) |
backup_store_versions_fails |
Указывает на ошибку сохранения версии Manticore в резервной копии |
backup_table_count |
Общее количество таблиц в резервной копии |
backup_no_permissions |
Ошибка резервного копирования из-за недостаточных прав на каталог назначения |
backup_total_size |
Общий размер полной резервной копии |
backup_time |
Продолжительность резервного копирования |
restore_searchd_running |
Ошибка запуска процесса восстановления из-за уже запущенного searchd |
restore_no_config_file |
Отсутствие конфигурационного файла в резервной копии при восстановлении |
restore_time |
Продолжительность восстановления |
fsync_time |
Продолжительность fsync |
restore_target_exists |
Возникает, если папка или индекс уже существует в каталоге назначения при восстановлении |
terminations |
Указывает, что процесс был завершён |
signal_* |
Сигнал, использованный для завершения процесса |
tables |
Количество таблиц в Manticore |
config_unreachable |
Указанный конфигурационный файл не существует |
config_data_dir_missing |
Не удалось распарсить data_dir из указанного конфигурационного файла |
config_data_dir_is_relative |
Путь data_dir в конфигурационном файле экземпляра Manticore является относительным |
Каждая метрика сопровождается следующими метками:
| Метка | Описание |
|---|---|
collector |
buddy. Указывает, что метрика собрана через Manticore Buddy |
os_name |
Название операционной системы |
os_release_name |
Название из /etc/os-release, если присутствует, иначе unknown |
os_release_version |
Версия из /etc/os-release, если присутствует, иначе unknown |
dockerized |
Запущено ли в среде Docker |
official_docker |
В случае Docker — флаг, показывающий, что используется официальный образ |
machine_id |
Идентификатор сервера (содержимое /etc/machine-id в Linux) |
arch |
Архитектура машины, на которой запущено ПО |
manticore_version |
Версия Manticore |
columnar_version |
Версия библиотеки Columnar, если она установлена |
secondary_version |
Версия вторичной библиотеки, если установлена библиотека Columnar |
knn_version |
Версия библиотеки KNN, если установлена библиотека Columnar |
buddy_version |
Версия Manticore Buddy |
Выпущено: 7 декабря 2025
Если вы следуете официальному руководству по установке, вам не нужно об этом беспокоиться.
- ⚠️ 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: исправлены мелкие ошибки перевода.
Released: November 7th 2025
❤️ Мы хотим выразить искреннюю благодарность @ricardopintottrdata за их работу над PR #3792 и PR #3828 — решающими проблемы с подсчетом total в HAVING и ошибкой filter with empty name — а также @jdelStrother за их вклад с PR #3819, который улучшает обработку ParseCJKSegmentation, когда поддержка Jieba недоступна.
Ваши усилия помогают сделать проект сильнее — большое спасибо!
Если вы следуете официальному руководству по установке, вам не о чем беспокоиться.
Версия 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.
Выпущено: 7 октября 2025
Если вы следуете официальному руководству по установке, вам не нужно об этом беспокоиться.
Поскольку файл конфигурации был обновлен, во время обновления на 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.
Выпущено: 13 сентября 2025
- 🪲 v13.11.1 Issue #3751 Исправлен сбой при удалении документа с включенными embeddings.
Выпущено: 13 сентября 2025
Основным нововведением этого релиза является Auto Embeddings — новая функция, которая делает семантический поиск таким же простым, как SQL. Не нужны внешние сервисы или сложные конвейеры: просто вставьте текст и ищите с помощью естественного языка.
- Автоматическая генерация эмбеддингов непосредственно из вашего текста
- Запросы на естественном языке, которые понимают смысл, а не только ключевые слова
- Поддержка нескольких моделей (OpenAI, Hugging Face, Voyage, Jina)
- Бесшовная интеграция с SQL и JSON API
Если вы следуете официальному руководству по установке, вам не о чем беспокоиться.
Рекомендуемая версия 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.
Выпущено: 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) могли создавать слишком длинные слова, теперь они сокращаются перед использованием.
Выпущено: 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
- 🪲 v13.2.3 PR #3556 Исправлен разбор опции "oversampling" в JSON-запросах
- 🪲 v13.2.2 Исправлена ошибка логирования сбоев на Linux и FreeBSD путем удаления использования Boost stacktrace
- 🪲 v13.2.1 Issue #3298 Исправлено логирование сбоев при запуске внутри контейнера
- 🪲 v12.0.2 Повышена точность статистики по таблицам за счет учета микросекунд
- 🪲 v12.0.1 PR #3522 Исправлен сбой при фасетировании по MVA в объединенном запросе
- 🪲 v11.0.3 Issue #3502 Исправлен сбой, связанный с квантизацией векторного поиска
- 🪲 v11.0.2 Issue #3493 Изменено отображение CPU в
SHOW THREADSна целочисленное значение - 🪲 v11.0.1 Исправлены пути для колоннарных и вторичных библиотек
- 🪲 v10.2.7 Добавлена поддержка MCL 5.0.5, включая исправление имени файла библиотеки embeddings
- 🪲 v10.2.6 Issue #3469 Применено дополнительное исправление, связанное с issue #3469
- 🪲 v10.2.4 Issue #3469 Исправлена проблема, при которой HTTP-запросы с булевыми запросами возвращали пустые результаты
- 🪲 v10.2.5 Изменено имя файла библиотеки embeddings по умолчанию и добавлены проверки поля 'from' в KNN векторах
- 🪲 v10.2.3 PR #3464 Обновлен Buddy до версии 3.30.2, включающей PR #565 о использовании памяти и логировании ошибок
- 🪲 v10.2.2 Issue #3470 Исправлены фильтры JSON-строк, null-фильтры и проблемы с сортировкой в JOIN-запросах
- 🪲 v10.2.1 Исправлена ошибка в
dist/test_kit_docker_build.sh, из-за которой отсутствовал коммит Buddy - 🪲 v10.1.4 Исправлен сбой при группировке по MVA в объединенном запросе
- 🪲 v10.1.3 Issue #3434 Исправлена ошибка с фильтрацией пустых строк
- 🪲 v10.1.2 PR #3452 Обновлен Buddy до версии 3.29.7, что решает Buddy #507 - ошибка при мультизапросах с нечетким поиском и Buddy #561 - исправление для метрик rate, требуется для Helm Release 10.1.0
- 🪲 v10.1.1 Обновлен Buddy до версии 3.29.4, решающей #3388 - "Неопределенный ключ массива 'Field'" и Buddy #547 - layouts='ru' может не работать
Выпущено: 9 июня 2025
Эта версия представляет собой обновление с новыми функциями, одним критическим изменением и многочисленными улучшениями стабильности и исправлениями ошибок. Изменения направлены на улучшение возможностей мониторинга, повышение функциональности поиска и исправление различных критических проблем, влияющих на стабильность и производительность системы.
Начиная с версии 10.1.0, CentOS 7 больше не поддерживается. Пользователям рекомендуется перейти на поддерживаемую операционную систему.
- ⚠️ v10.0.0 Issue #540 КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: установлено
layouts=''по умолчанию для нечеткого поиска
- 🆕 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-атрибутами
Выпущено: 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.
Выпущено: 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.
Выпущена: 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.
Выпущено: 30 января 2025
- Issue #1497 Добавлены новые функции Fuzzy Search и Autocomplete для упрощения поиска.
- Issue #1500 Интеграция с Kafka.
- Issue #1928 Введены вторичные индексы для JSON.
- Issue #2361 Обновления и поиски во время обновлений больше не блокируются слиянием чанков.
- Issue #2787 Автоматический сброс дискового чанка для RT таблиц для улучшения производительности; теперь мы автоматически сбрасываем RAM-чанк в дисковый чанк, предотвращая проблемы с производительностью, вызванные отсутствием оптимизаций в RAM-чанках, что иногда могло приводить к нестабильности в зависимости от размера чанка.
- Issue #2811 Опция Scroll для упрощения пагинации.
- Issue #931 Интеграция с Jieba для улучшенной токенизации китайского языка.
- ⚠️ 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.
Выпущено: 22 ноября 2024
Версия 6.3.8 продолжает серию 6.3 и включает только исправления ошибок.
- PR #2777 Исправлен расчёт доступных потоков при ограничении параллелизма запросов настройками
threadsилиmax_threads_per_query.
Выпущено: 7 октября 2024
- Issue #64 Решена проблема, когда утилита
unattended-upgrades, автоматически устанавливающая обновления пакетов в системах на базе Debian, ошибочно помечала несколько пакетов Manticore, включаяmanticore-galera,manticore-executorиmanticore-columnar-lib, для удаления. Это происходило из-за того, чтоdpkgошибочно считал виртуальный пакетmanticore-extraизбыточным. Внесены изменения, чтобыunattended-upgradesбольше не пыталась удалять важные компоненты Manticore.
Выпущено: 2 августа 2024
Версия 6.3.6 продолжает серию 6.3 и включает только исправления ошибок.
- Issue #2477 Исправлен сбой, введённый в версии 6.3.4, который мог возникать при работе с выражениями и распределёнными или множественными таблицами.
- Issue #2352 Исправлен сбой демона или внутренняя ошибка при преждевременном выходе, вызванном
max_query_timeпри запросах к нескольким индексам.
Выпущено: 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.
Выпущена: 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-toolsRedhat в версии 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.
Выпущена: 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
- 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.
- 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при использовании колоночного атрибута.
- ❗Issue #42 Поддержка plain indexation через переменные окружения.
- ❗Issue #47 Повышена гибкость конфигурации через переменные окружения.
- Issue #54 Улучшены процессы резервного копирования и восстановления для Docker.
- Issue #77 Улучшен entrypoint для обработки восстановления резервной копии только при первом запуске.
- Commit a27c Исправлен вывод логов запросов в stdout.
- Issue #38 Отключение предупреждений BUDDY, если EXTRA не установлен.
- Issue #71 Исправлено имя хоста в
manticore.conf.sh.
Выпущена: 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в руководстве.
- Поддержка Manticore Columnar Library версии 2.2.4
Выпущено: 4 августа 2023
- Оптимизатор запросов был улучшен для поддержки полнотекстовых запросов, что значительно повысило эффективность и производительность поиска.
- Интеграции с:
- mysqldump — для создания логических резервных копий с помощью
mysqldump - Apache Superset и Grafana для визуализации данных, хранящихся в Manticore
- HeidiSQL и DBForge для упрощения разработки с Manticore
- mysqldump — для создания логических резервных копий с помощью
- Мы начали использовать 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().
Released: March 15 2023
- Улучшена интеграция с Logstash, Beats и др., включая:
- Поддержку версий Logstash 7.6 - 7.15, Filebeat 7.7 - 7.12
- Поддержку авто-схемы.
- Добавлена обработка bulk-запросов в формате, похожем на Elasticsearch.
- Buddy commit ce90 Версия Log Buddy при запуске Manticore.
- 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 Разрешены пробелы в пути резервной копии и добавлена поддержка одинарных кавычек в регулярных выражениях.
Released: Feb 10 2023
- Issue #1024 crash 2 Сбой / Ошибка сегментации при поиске по фасетам с большим количеством результатов
- ❗Issue #1029 - ВНИМАНИЕ: Встроенное значение KNOWN_CREATE_SIZE (16) меньше измеренного (208). Рекомендуется исправить значение!
- ❗Issue #1032 - Падение plain индекса в Manticore 6.0.0
- ❗Issue #1033 - потеря нескольких распределенных индексов при перезапуске демона
- ❗Issue #1064 - состояние гонки в таблицах нижнего регистра токенизатора
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 для перестроения вторичных индексов в любое время, например:
- при миграции с Manticore 5 на новую версию,
- после выполнения UPDATE (т.е. обновления на месте, а не замены) атрибута в индексе
- 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). - подробнее о перезапуске кластера.
- Рефакторинг интеграции вторичных индексов с колоночным хранилищем.
- 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 лог сбоев включал только оффсеты. Этот коммит исправляет это.
Выпущено: 30 мая 2022
- ❗Issue #791 - неправильный размер стека мог вызвать сбой.
Выпущено: 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теперь требует экранирования и возвращает массив. - ⚠️ Изменён формат ответа на запросы
/bulkINSERT/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*
- Для RPM-систем:
-
Новая структура пакетов deb/rpm. Предыдущие версии предоставляли:
manticore-serverсsearchd(основной демон поиска) и всем необходимым для негоmanticore-toolsсindexerиindextoolmanticore, включающий всёmanticore-allRPM как мета-пакет, ссылающийся на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мог быть указан дважды в журнале запросов
- Поддержка псевдо-шардинга для индексов реального времени и полнотекстовых запросов. В предыдущем релизе мы добавили ограниченную поддержку псевдо-шардинга. Начиная с этой версии, вы можете получить все преимущества псевдо-шардинга и вашего многоядерного процессора, просто включив searchd.pseudo_sharding. Самое классное, что вам не нужно ничего делать с вашими индексами или запросами, просто включите его, и если у вас есть свободный CPU, он будет использован для снижения времени отклика. Поддерживаются обычные и индексы реального времени для полнотекстовых, фильтрационных и аналитических запросов. Например, вот как включение псевдо-шардинга может сделать среднее время отклика большинства запросов примерно в 10 раз меньше на наборе данных курируемых комментариев Hacker news, умноженном в 100 раз (116 миллионов документов в обычном индексе).

- Теперь поддерживается Debian Bullseye.
- Транзакции 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Вставка 1 миллиона правил PQ занимает 34 секунды, а REPLACE их — 23 секунды в партиях по 10 тысяч.
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:06:38 AM CET 2021
Wed Dec 22 10:07:12 AM CET 2021
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
root@perf3 ~ # date; (echo "begin;"; for offset in `seq 0 10000 990000`; 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:12:31 AM CET 2021
Wed Dec 22 10:14:00 AM CET 2021
root@perf3 ~ # time mysql -P9306 -h0 < /tmp/replace.sql
real 0m23.248s
user 0m0.891s
sys 0m0.047s- 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
-
Полная поддержка 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.007stime 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 0m0.006s
user 0m0.004s
sys 0m0.001s- пользовательские флаги запуска для systemd. Теперь не нужно запускать searchd вручную, если нужно запустить Manticore с каким-то специфическим флагом запуска
- новая функция LEVENSHTEIN(), которая вычисляет расстояние Левенштейна
- добавлены новые флаги запуска searchd
--replay-flags=ignore-trx-errorsи--replay-flags=ignore-all-errors, чтобы можно было запустить searchd, если binlog повреждён - Issue #621 — отображение ошибок из RE2
- более точный COUNT(DISTINCT) для распределённых индексов, состоящих из локальных простых индексов
- FACET DISTINCT для удаления дубликатов при фасетном поиске
- модификатор точной формы теперь не требует морфологии и работает для индексов с включённым infix/prefix поиском
- новая версия может читать старые индексы, но старые версии не могут читать индексы 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:
- в
/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 мог зависать после нескольких обновлений строковых атрибутов
Релиз технического обслуживания перед Manticore 4
- Поддержка Manticore Columnar Library для plain индексов. Новая настройка columnar_attrs для plain индексов
- Поддержка украинского лемматизатора
- Полностью переработанные гистограммы. При построении индекса Manticore также строит гистограммы для каждого поля, которые затем используются для более быстрого фильтрования. В версии 3.6.0 алгоритм был полностью переработан, и вы можете получить более высокую производительность при большом объеме данных и интенсивном фильтровании.
- инструмент
manticore_new_cluster [--force], полезный для перезапуска кластера репликации через systemd - --drop-src для
indexer --merge - новый режим
blend_mode='trim_all' - добавлена поддержка экранирования JSON пути с помощью обратных кавычек
- indextool --check может работать в режиме RT
- FORCE/IGNORE INDEX(id) для SELECT/UPDATE
- id чанка для объединенного дискового чанка теперь уникален
- indextool --check-disk-chunk CHUNK_NAME
- ускоренный разбор 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устарела
- Новые клиенты для 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 При использовании агрегации хранимые тексты не возвращаются в результатах
- 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-образ теперь основан на 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.
- Коммит 2a47 Сбой демона в grouper на RT индексе с разными чанками
- Коммит 57a1 Быстрый путь для пустых удалённых документов
- Коммит 07dd Время выполнения обнаружения фрейма стека выражения
- Коммит 08ae Совпадение более чем по 32 полям в percolate индексах
- Коммит 16b9 Диапазон портов для прослушивания репликации
- Коммит 5fa6 Показать create table в pq
- Коммит 54d1 Поведение HTTPS порта
- Коммит fdbb Перемешивание строк docstore при замене
- Коммит afb5 Переключение уровня сообщения TFO unavailable на 'info'
- Коммит 59d9 Сбой при неправильном использовании strcmp
- Коммит 04af Добавление индекса в кластер с системными (стоп-словами) файлами
- Коммит 5014 Слияние индексов с большими словарями; оптимизация RT больших дисковых чанков
- Коммит a2ad Indextool может выгружать метаданные из текущей версии
- Коммит 69f6 Проблема с порядком группировки в GROUP N
- Коммит 24d5 Явная очистка для SphinxSE после рукопожатия
- Коммит 31c4 Избегать копирования больших описаний, когда это не нужно
- Коммит 2959 Отрицательное время в show threads
- Коммит f0b3 Плагин фильтра токенов против нулевых дельт позиций
- Коммит a49e Изменение 'FAIL' на 'WARNING' при множественных попаданиях
-
Этот релиз занял много времени, потому что мы усердно работали над изменением режима многозадачности с потоков на корутины. Это упрощает конфигурацию и делает параллелизацию запросов гораздо более прямолинейной: 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
- Issue #351 утечка памяти в searchd
- Commit ceab Небольшое чтение за пределами буфера в сниппетах
- Commit 1c3e Опасная запись в локальную переменную для аварийных запросов
- Commit 26e0 Небольшая утечка памяти сортировщика в тесте 226
- Commit d2c7 Большая утечка памяти в тесте 226
- Commit 0dd8 Кластер показывает, что узлы синхронизированы, но
count(*)показывает разные числа - Commit f1c1 Косметика: дублирование и иногда потеря предупреждающих сообщений в логе
- Commit f1c1 Косметика: (null) имя индекса в логе
- Commit 359d Невозможно получить более 70M результатов
- Commit 19f3 Невозможно вставить правила PQ без указания столбцов
- Commit bf68 Ввод документа в индекс в кластере вызывает вводящее в заблуждение сообщение об ошибке
- Commit 2cf1
/json/replaceиjson/updateвозвращают id в экспоненциальной форме - Issue #324 Обновление скалярных свойств json и mva в одном запросе
- Commit d384
hitless_wordsне работает в RT режиме - Commit 5813
ALTER RECONFIGUREв rt режиме должен быть запрещён - Commit 5813
rt_mem_limitсбрасывается в 128M после перезапуска searchd - highlight() иногда зависает
- Commit 7cd8 Не удалось использовать U+код в RT режиме
- Commit 2b21 Не удалось использовать подстановочный знак в wordforms в RT режиме
- Commit e9d0 Исправлено
SHOW CREATE TABLEпри нескольких файлах wordform - Коммит fc90 JSON-запрос без "query" вызывает сбой searchd
- Официальный docker Manticore не мог индексировать из mysql 8
- Коммит 23e0 HTTP /json/insert требует id
- Коммит bd67
SHOW CREATE TABLEне работает для PQ - Коммит bd67
CREATE TABLE LIKEнекорректно работает для PQ - Коммит 5eac Конец строки в настройках в show index status
- Коммит cb15 Пустой заголовок в "highlight" в HTTP JSON ответе
- Issue #318 Ошибка infix в
CREATE TABLE LIKE - Коммит 9040 RT падает под нагрузкой
- cd512c7d Потерян лог сбоя при краше RT disk chunk
- Issue #323 Импорт таблицы неудачен и закрывает соединение
- Коммит 6275
ALTER reconfigureповреждает индекс PQ - Коммит 9c1d Проблемы с перезагрузкой searchd после изменения типа индекса
- Коммит 71e2 Демон падает при импорте таблицы с отсутствующими файлами
- Issue #322 Сбой при select с использованием нескольких индексов, group by и ranker = none
- Коммит c3f5
HIGHLIGHT()не выделяет в строковых атрибутах - Issue #320
FACETне сортирует по строковому атрибуту - Коммит 4f1a Ошибка при отсутствии каталога данных
- Коммит 04f4 access_* не поддерживаются в режиме RT
- Коммит 1c06 Плохие JSON объекты в строках: 1.
CALL PQвозвращает "Bad JSON objects in strings: 1" когда json превышает некоторое значение. - Коммит 32f9 Несогласованность в режиме RT. В некоторых случаях нельзя удалить индекс, так как он неизвестен, и нельзя создать, так как каталог не пуст.
- Issue #319 Сбой при select
- Коммит 22a2
max_xmlpipe2_field= 2M выдает предупреждение на поле 2M - Issue #342 Ошибка выполнения условий запроса
- Коммит dd8d Простой поиск из 2 терминов находит документ, содержащий только один термин
- Коммит 9091 В PQ было невозможно сопоставить json с заглавными буквами в ключах
- Коммит 56da Индексатор падает на csv+docstore
- Issue #363 Использование
[null]в json атрибуте в centos 7 вызывает повреждение вставленных данных - Крупный Issue #345 Записи не вставляются, count() случайно, "replace into" возвращает OK
- max_query_time слишком сильно замедляет SELECTы
- Issue #352 Сбой связи master-agent на Mac OS
- Issue #328 Ошибка при подключении к Manticore с Connector.Net/Mysql 8.0.19
- Коммит daa7 Исправлено экранирование \0 и оптимизирована производительность
- Коммит 9bc5 Исправлен count distinct vs json
- Коммит 4f89 Исправлен сбой при drop table на другом узле
- Коммит 952a Исправлены сбои при частом вызове call pq
- Коммит 2ffe исправлен сбой индекса RT из старой версии при индексации данных
- сервер работает в 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
- Параллельный поиск в 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 индекса с параллельными вставками
- Автоинкремент 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
- Хранение документов
- новые директивы 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
- Экспериментальная поддержка 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
- репликация для 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
- добавлены 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
- Новое хранилище индексов. Нескалярные атрибуты больше не ограничены размером 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
- Репликация 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 индекса с дисковыми чанками
- 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 воркерами
- Распределённые индексы для 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 лемматизаторов в определениях индекса
- Функция 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 решил эту проблему
- 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 исправлена взаимная блокировка при ротации
- опция 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
- совместимость с клиентами 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
- улучшена производительность подстановочных знаков при сопоставлении нескольких документов в PQ
- поддержка fullscan-запросов в PQ
- поддержка атрибутов MVA в PQ
- поддержка regexp и RLP для percolate индексов
- Commit 6885 исправлена потеря строки запроса
- Commit 0f17 исправлена пустая информация в операторе SHOW THREADS
- Commit 53fa исправлен сбой при сопоставлении с оператором NOTNEAR
- Commit 2602 исправлено сообщение об ошибке при неверном фильтре для удаления в PQ
- уменьшено количество системных вызовов для снижения влияния патчей 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)
- 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
- поддержка MySQL FEDERATED движка support
- пакеты MySQL теперь возвращают флаг SERVER_STATUS_AUTOCOMMIT, добавляя совместимость с ProxySQL
- listen_tfo - включение TCP Fast Open для всех слушателей
- indexer --dumpheader теперь может также выгружать заголовок RT из .meta файла
- скрипт сборки cmake для Ubuntu Bionic
- Commit 355b исправлены недействительные записи кэша запросов для RT индекса;
- Commit 546e исправлены настройки индекса, которые терялись после бесшовной ротации
- Commit 0c45 исправлены установки длины infix и prefix; добавлено предупреждение о неподдерживаемой длине infix
- Commit 8054 исправлен порядок автофлеша RT индексов
- Commit 705d исправлены проблемы схемы результирующего набора для индекса с несколькими атрибутами и запросами к нескольким индексам
- Commit b0ba исправлена потеря некоторых хитов при пакетной вставке с дубликатами документов
- Commit 4510 исправлена ошибка optimize при слиянии дисковых чанков RT индекса с большим количеством документов
- jemalloc при компиляции. Если jemalloc присутствует в системе, его можно включить с помощью флага cmake
-DUSE_JEMALLOC=1
- 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 с определёнными минимальными длинами
- улучшена производительность 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(*)
- 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).
- HTTP JSON: JSON-запросы теперь могут выполнять проверку равенства по атрибутам, MVA и JSON атрибуты могут использоваться при вставках и обновлениях, обновления и удаления через JSON API теперь возможны на распределённых индексах
- Percolate Queries
- Удалена поддержка 32-битных docid из кода. Также удалён весь код, который конвертирует/загружает устаревшие индексы с 32-битными docid.
- Морфология только для определённых полей. Новая директива индекса morphology_skip_fields позволяет определить список полей, для которых морфология не применяется.
- expand_keywords теперь может быть директивой времени выполнения запроса, установленной с помощью оператора OPTION
- Коммит 0cfa исправил сбой в debug-сборке сервера (и возможно UB в релизе) при сборке с rlp
- Коммит 3242 исправил оптимизацию RT индекса с включенной опцией progressive, которая объединяла kill-листы в неправильном порядке
- Коммит ac0e незначительный сбой на mac
- множество мелких исправлений после тщательного статического анализа кода
- другие мелкие исправления ошибок
В этом релизе мы изменили внутренний протокол, используемый мастерами и агентами для общения друг с другом. Если вы запускаете Manticoresearch в распределенной среде с несколькими инстансами, убедитесь, что сначала обновили агентов, а затем мастеров.
- 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
- Оператор 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 исправлена взаимная блокировка сервера
- Брендинг Manticore
К сожалению, Manticore пока не является на 100% свободным от ошибок, хотя команда разработчиков усердно работает над достижением этой цели. Время от времени вы можете столкнуться с некоторыми проблемами. Очень важно сообщать как можно больше информации о каждой ошибке для её эффективного исправления. Чтобы исправить ошибку, её либо нужно воспроизвести и исправить, либо определить причину на основе предоставленной вами информации. Чтобы помочь в этом, пожалуйста, следуйте приведённым ниже инструкциям.
Ошибки и запросы на новые функции отслеживаются на Github. Вы можете создать новый тикет и подробно описать вашу ошибку, чтобы сэкономить время как для себя, так и для разработчиков.
Обновления документации (то, что вы сейчас читаете) также выполняются на Github.
Manticore Search написан на C++, что является языком программирования низкого уровня, позволяющим напрямую взаимодействовать с компьютером для более высокой производительности. Однако у такого подхода есть недостаток: в редких случаях может не получиться элегантно обработать ошибку, записав её в лог и пропустив обработку команды, вызвавшей проблему. Вместо этого программа может аварийно завершиться, полностью остановившись и требуя перезапуска.
Когда Manticore Search аварийно завершается, важно сообщить об этом команде Manticore, отправив отчет об ошибке на GitHub или через профессиональные услуги Manticore в вашем приватном хелпдеске. Команда Manticore требует следующую информацию:
- Лог searchd
- Coredump
- Лог запросов
Кроме того, будет полезно, если вы сможете сделать следующее:
- Запустите gdb для анализа coredump:
gdb /usr/bin/searchd </path/to/coredump> - Найдите ID аварийного потока в имени файла coredump (убедитесь, что у вас есть
%pв /proc/sys/kernel/core_pattern), например,core.work_6.29050.server_name.1637586599означает thread_id=29050 - В gdb выполните:
set pagination off info threads # find thread number by it's id (e.g. for `LWP 29050` it will be thread number 8 thread apply all bt thread <thread number> bt full info locals quit - Предоставьте выводы
Если Manticore Search завис, вам нужно собрать некоторую информацию, которая может помочь понять причину. Вот как это сделать:
- Выполните
show threads option format=allчерез VIP порт - Соберите вывод lsof, так как зависание может быть вызвано слишком большим количеством соединений или открытых дескрипторов файлов.
lsof -p `cat /run/manticore/searchd.pid` - Создайте дамп памяти:
gcore `cat /run/manticore/searchd.pid`(Дамп будет сохранён в текущую директорию.)
- Установите и запустите gdb:
gdb /usr/bin/searchd `cat /run/manticore/searchd.pid`Обратите внимание, что это остановит работающий searchd, но если он уже завис, это не должно быть проблемой.
- В gdb выполните:
set pagination off info threads thread apply all bt quit - Соберите все выводы и файлы и предоставьте их в отчёте об ошибке.
Для экспертов: макросы, добавленные в этот коммит, могут быть полезны при отладке.
- Убедитесь, что вы запускаете searchd с
--coredump. Чтобы не изменять скрипты, вы можете использовать метод https://manual.manticoresearch.com/Starting_the_server/Linux#Custom-startup-flags-using-systemd . Например::
[root@srv lib]# systemctl set-environment _ADDITIONAL_SEARCHD_PARAMS='--coredump'
[root@srv lib]# systemctl restart manticore
[root@srv lib]# ps aux|grep searchd
mantico+ 1955 0.0 0.0 61964 1580 ? S 11:02 0:00 /usr/bin/searchd --config /etc/manticoresearch/manticore.conf --coredump
mantico+ 1956 0.6 0.0 392744 2664 ? Sl 11:02 0:00 /usr/bin/searchd --config /etc/manticoresearch/manticore.conf --coredump
-
Убедитесь, что ваша операционная система позволяет сохранять дампы памяти, проверив, что:
/proc/sys/kernel/core_patternне пуст. Это место, куда будут сохраняться дампы памяти. Чтобы сохранять дампы в файл, напримерcore.searchd.1773.centos-4gb-hel1-1.1636454937, выполните следующую команду:echo "/cores/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern -
searchd должен запускаться с
ulimit -c unlimited. Если вы запускаете Manticore через systemctl, он автоматически установит лимит в бесконечность, как указано в следующей строке файла manticore.service:[root@srv lib]# grep CORE /lib/systemd/system/manticore.service LimitCORE=infinity
Manticore Search и Manticore Columnar Library написаны на C++, что приводит к созданию скомпилированных бинарных файлов, которые оптимально выполняются на вашей операционной системе. Однако при запуске бинарника ваша система не имеет полного доступа к именам переменных, функций, методов и классов. Эта информация предоставляется в отдельных пакетах "debuginfo" или "symbol packages".
Отладочные символы необходимы для устранения неполадок и отладки, так как они позволяют визуализировать состояние системы в момент сбоя, включая имена функций. Manticore Search предоставляет backtrace в логе searchd и генерирует coredump, если запущен с флагом --coredump. Без символов вы увидите только внутренние смещения, что затрудняет или делает невозможным расшифровку причины сбоя. Если вам нужно сделать отчет об ошибке по сбою, команда Manticore часто потребует отладочные символы для помощи.
Чтобы установить отладочные символы Manticore Search/Manticore Columnar Library, вам нужно установить пакет *debuginfo* для CentOS, пакет *dbgsym* для Ubuntu и Debian или пакет *dbgsymbols* для Windows и macOS. Эти пакеты должны соответствовать версии установленного Manticore. Например, если вы установили Manticore Search в Centos 8 из пакета https://repo.manticoresearch.com/repository/manticoresearch/release/centos/8/x86_64/manticore-4.0.2_210921.af497f245-1.el8.x86_64.rpm , соответствующий пакет с символами будет https://repo.manticoresearch.com/repository/manticoresearch/release/centos/8/x86_64/manticore-debuginfo-4.0.2_210921.af497f245-1.el8.x86_64.rpm
Обратите внимание, что оба пакета имеют одинаковый идентификатор коммита af497f245, который соответствует коммиту, из которого была собрана эта версия.
Если вы установили Manticore из репозитория Manticore APT/YUM, вы можете использовать один из следующих инструментов:
debuginfo-installв CentOS 7dnf debuginfo-installв CentOS 8find-dbgsym-packagesв Debian и Ubuntu
чтобы найти пакет отладочных символов для вас.
- Найдите build ID в выводе
file /usr/bin/searchd:
[root@srv lib]# file /usr/bin/searchd
/usr/bin/searchd: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=2c582e9f564ea1fbeb0c68406c271ba27034a6d3, stripped
В данном случае build ID — 2c582e9f564ea1fbeb0c68406c271ba27034a6d3.
- Найдите символы в
/usr/lib/debug/.build-idвот так:
[root@srv ~]# ls -la /usr/lib/debug/.build-id/2c/582e9f564ea1fbeb0c68406c271ba27034a6d3*
lrwxrwxrwx. 1 root root 23 Nov 9 10:42 /usr/lib/debug/.build-id/2c/582e9f564ea1fbeb0c68406c271ba27034a6d3 -> ../../../../bin/searchd
lrwxrwxrwx. 1 root root 27 Nov 9 10:42 /usr/lib/debug/.build-id/2c/582e9f564ea1fbeb0c68406c271ba27034a6d3.debug -> ../../usr/bin/searchd.debug
Чтобы исправить вашу ошибку, разработчикам часто нужно воспроизвести её локально. Для этого им нужны ваш конфигурационный файл, файлы таблиц, binlog (если есть), а иногда исходные данные (например, данные из внешних хранилищ или XML/CSV файлы) и запросы.
Прикрепляйте ваши данные при создании тикета на Github. Если данные слишком большие или конфиденциальные, вы можете загрузить их в наше хранилище S3 с правом только на запись по адресу s3://s3.manticoresearch.com/write-only/.
Для удобства мы предоставляем механизм загрузки с использованием Docker-образа. Этот образ построен из нашего открытого репозитория на github.com/manticoresoftware/s3-upload и помогает легко загружать данные в S3-хранилище Manticore с правом только на запись. Вот как это сделать:
- Перейдите в каталог с файлами, которые хотите загрузить, и выполните:
docker run -it --rm -v $(pwd):/upload manticoresearch/upload - Это:
- Попросит вас ввести URL/номер связанной задачи
- Загрузит все файлы в текущем каталоге в наше S3-хранилище с правом только на запись
- В конце вы увидите путь загрузки. Пожалуйста, поделитесь этим путем с разработчиками.
- Example
docker run -it --rm -v $(pwd):/upload manticoresearch/upload🚀 Welcome to Manticore Search Upload Tool! 🚀
📂 Files to be uploaded:
tt (800)
🔗 Please enter the related issue URL/number
(e.g., https://github.com/manticoresoftware/manticoresearch/issues/123 or just 123):
123
📤 Starting upload process...
INFO: Cache file not found or empty, creating/populating it.
INFO: Compiling list of local files...
INFO: Running stat() and reading/calculating MD5 values on 23 files, this may take some time...
INFO: Summary: 23 local files to upload
upload: './tt/tt.0.spa' -> 's3://write-only/issue-20250219-123/tt/tt.0.spa' [1 of 23]
40 of 40 100% in 2s 15.03 B/s done
upload: './tt/tt.0.spd' -> 's3://write-only/issue-20250219-123/tt/tt.0.spd' [2 of 23]
1 of 1 100% in 0s 1.99 B/s done
upload: './tt/tt.0.spe' -> 's3://write-only/issue-20250219-123/tt/tt.0.spe' [3 of 23]
1 of 1 100% in 0s 2.02 B/s done
upload: './tt/tt.0.sph' -> 's3://write-only/issue-20250219-123/tt/tt.0.sph' [4 of 23]
420 of 420 100% in 0s 895.32 B/s done
upload: './tt/tt.0.sphi' -> 's3://write-only/issue-20250219-123/tt/tt.0.sphi' [5 of 23]
66 of 66 100% in 0s 142.67 B/s done
upload: './tt/tt.0.spi' -> 's3://write-only/issue-20250219-123/tt/tt.0.spi' [6 of 23]
18 of 18 100% in 0s 39.13 B/s done
upload: './tt/tt.0.spidx' -> 's3://write-only/issue-20250219-123/tt/tt.0.spidx' [7 of 23]
145 of 145 100% in 0s 313.38 B/s done
upload: './tt/tt.0.spm' -> 's3://write-only/issue-20250219-123/tt/tt.0.spm' [8 of 23]
4 of 4 100% in 0s 8.36 B/s done
upload: './tt/tt.0.spp' -> 's3://write-only/issue-20250219-123/tt/tt.0.spp' [9 of 23]
1 of 1 100% in 0s 2.15 B/s done
upload: './tt/tt.0.spt' -> 's3://write-only/issue-20250219-123/tt/tt.0.spt' [10 of 23]
36 of 36 100% in 0s 78.35 B/s done
upload: './tt/tt.1.spa' -> 's3://write-only/issue-20250219-123/tt/tt.1.spa' [11 of 23]
48 of 48 100% in 0s 81.35 B/s done
upload: './tt/tt.1.spd' -> 's3://write-only/issue-20250219-123/tt/tt.1.spd' [12 of 23]
1 of 1 100% in 0s 1.65 B/s done
upload: './tt/tt.1.spe' -> 's3://write-only/issue-20250219-123/tt/tt.1.spe' [13 of 23]
1 of 1 100% in 0s 1.95 B/s done
upload: './tt/tt.1.sph' -> 's3://write-only/issue-20250219-123/tt/tt.1.sph' [14 of 23]
420 of 420 100% in 0s 891.58 B/s done
upload: './tt/tt.1.sphi' -> 's3://write-only/issue-20250219-123/tt/tt.1.sphi' [15 of 23]
82 of 82 100% in 0s 166.42 B/s done
upload: './tt/tt.1.spi' -> 's3://write-only/issue-20250219-123/tt/tt.1.spi' [16 of 23]
18 of 18 100% in 0s 39.46 B/s done
upload: './tt/tt.1.spidx' -> 's3://write-only/issue-20250219-123/tt/tt.1.spidx' [17 of 23]
183 of 183 100% in 0s 374.04 B/s done
upload: './tt/tt.1.spm' -> 's3://write-only/issue-20250219-123/tt/tt.1.spm' [18 of 23]
4 of 4 100% in 0s 8.42 B/s done
upload: './tt/tt.1.spp' -> 's3://write-only/issue-20250219-123/tt/tt.1.spp' [19 of 23]
1 of 1 100% in 0s 1.28 B/s done
upload: './tt/tt.1.spt' -> 's3://write-only/issue-20250219-123/tt/tt.1.spt' [20 of 23]
50 of 50 100% in 1s 34.60 B/s done
upload: './tt/tt.lock' -> 's3://write-only/issue-20250219-123/tt/tt.lock' [21 of 23]
0 of 0 0% in 0s 0.00 B/s done
upload: './tt/tt.meta' -> 's3://write-only/issue-20250219-123/tt/tt.meta' [22 of 23]
456 of 456 100% in 0s 923.34 B/s done
upload: './tt/tt.settings' -> 's3://write-only/issue-20250219-123/tt/tt.settings' [23 of 23]
3 of 3 100% in 0s 6.41 B/s done
✅ Upload complete!
📋 Please share this path with the developers:
issue-20250219-123
💡 Tip: Make sure to include this path when communicating with the Manticore teamВ качестве альтернативы вы можете использовать S3 Minio client или инструмент Amazon s3cmd для того же, например:
- Установите клиент https://min.io/docs/minio/linux/reference/minio-mc.html#install-mc
Например, для 64-битного Linux:
curl https://dl.min.io/client/mc/release/linux-amd64/mc \ --create-dirs \ -o $HOME/minio-binaries/mc chmod +x $HOME/minio-binaries/mc export PATH=$PATH:$HOME/minio-binaries/ - Добавьте наш s3-хост (используйте полный путь к исполняемому файлу или перейдите в его каталог):
cd $HOME/minio-binariesи затем./mc config host add manticore http://s3.manticoresearch.com:9000 manticore manticore - Скопируйте ваши файлы (используйте полный путь к исполняемому файлу или перейдите в его каталог):
cd $HOME/minio-binariesи затем./mc cp -r issue-1234/ manticore/write-only/issue-1234. Убедитесь, что имя папки уникально и желательно соответствует задаче на GitHub, где вы описали ошибку.
DEBUG [ subcommand ]
Оператор DEBUG предназначен для разработчиков и тестировщиков для вызова различных внутренних или VIP-команд. Однако он не предназначен для использования в продакшене, так как синтаксис компонента subcommand может свободно изменяться в любой сборке.
Чтобы просмотреть список полезных команд и подкоманд оператора DEBUG, доступных в текущем контексте, просто вызовите DEBUG без параметров.
mysql> debug;
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| command | meaning |
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| flush logs | emulate USR1 signal |
| reload indexes | emulate HUP signal |
| debug token <password> | calculate token for password |
| debug malloc_stats | perform 'malloc_stats', result in searchd.log |
| debug malloc_trim | pefrorm 'malloc_trim' call |
| debug sleep <N> | sleep for <N> seconds |
| debug tasks | display global tasks stat (use select from @@system.tasks instead) |
| debug sched | display task manager schedule (use select from @@system.sched instead) |
| debug merge <TBL> [chunk] <X> [into] [chunk] <Y> [option sync=1,byid=0] | For RT table <TBL> merge disk chunk X into disk chunk Y |
| debug drop [chunk] <X> [from] <TBL> [option sync=1] | For RT table <TBL> drop disk chunk X |
| debug files <TBL> [option format=all|external] | list files belonging to <TBL>. 'all' - including external (wordforms, stopwords, etc.) |
| debug close | ask server to close connection from it's side |
| debug compress <TBL> [chunk] <X> [option sync=1] | Compress disk chunk X of RT table <TBL> (wipe out deleted documents) |
| debug split <TBL> [chunk] <X> on @<uservar> [option sync=1] | Split disk chunk X of RT table <TBL> using set of DocIDs from @uservar |
| debug wait <cluster> [like 'xx'] [option timeout=3] | wait <cluster> ready, but no more than 3 secs. |
| debug wait <cluster> status <N> [like 'xx'] [option timeout=13] | wait <cluster> commit achieve <N>, but no more than 13 secs |
| debug meta | Show max_matches/pseudo_shards. Needs set profiling=1 |
| debug trace OFF|'path/to/file' [<N>] | trace flow to file until N bytes written, or 'trace OFF' |
| debug curl <URL> | request given url via libcurl |
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
19 rows in set (0.00 sec)
То же из VIP-подключения:
mysql> debug;
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| command | meaning |
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| flush logs | emulate USR1 signal |
| reload indexes | emulate HUP signal |
| debug shutdown <password> | emulate TERM signal |
| debug crash <password> | crash daemon (make SIGSEGV action) |
| debug token <password> | calculate token for password |
| debug malloc_stats | perform 'malloc_stats', result in searchd.log |
| debug malloc_trim | pefrorm 'malloc_trim' call |
| debug procdump | ask watchdog to dump us |
| debug setgdb on|off | enable or disable potentially dangerous crash dumping with gdb |
| debug setgdb status | show current mode of gdb dumping |
| debug sleep <N> | sleep for <N> seconds |
| debug tasks | display global tasks stat (use select from @@system.tasks instead) |
| debug sched | display task manager schedule (use select from @@system.sched instead) |
| debug merge <TBL> [chunk] <X> [into] [chunk] <Y> [option sync=1,byid=0] | For RT table <TBL> merge disk chunk X into disk chunk Y |
| debug drop [chunk] <X> [from] <TBL> [option sync=1] | For RT table <TBL> drop disk chunk X |
| debug files <TBL> [option format=all|external] | list files belonging to <TBL>. 'all' - including external (wordforms, stopwords, etc.) |
| debug close | ask server to close connection from it's side |
| debug compress <TBL> [chunk] <X> [option sync=1] | Compress disk chunk X of RT table <TBL> (wipe out deleted documents) |
| debug split <TBL> [chunk] <X> on @<uservar> [option sync=1] | Split disk chunk X of RT table <TBL> using set of DocIDs from @uservar |
| debug wait <cluster> [like 'xx'] [option timeout=3] | wait <cluster> ready, but no more than 3 secs. |
| debug wait <cluster> status <N> [like 'xx'] [option timeout=13] | wait <cluster> commit achieve <N>, but no more than 13 secs |
| debug meta | Show max_matches/pseudo_shards. Needs set profiling=1 |
| debug trace OFF|'path/to/file' [<N>] | trace flow to file until N bytes written, or 'trace OFF' |
| debug curl <URL> | request given url via libcurl |
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
24 rows in set (0.00 sec)
Все команды debug XXX следует считать нестабильными и подверженными изменениям в любое время, поэтому не удивляйтесь, если они изменятся. Этот пример вывода может не отражать фактически доступные команды, поэтому попробуйте на вашей системе, чтобы увидеть, что доступно на вашем экземпляре. Кроме того, подробной документации, кроме этой короткой колонки «значение», не предоставлено.
В качестве быстрой иллюстрации ниже описаны две команды, доступные только VIP-клиентам — shutdown и crash. Обе требуют токен, который можно сгенерировать с помощью подкоманды debug token, и добавить в параметр shutdown_token в секции searchd конфигурационного файла. Если такой секции нет или если предоставленный хэш пароля не совпадает с токеном, хранящимся в конфиге, подкоманды ничего не сделают.
mysql> debug token hello;
+-------------+------------------------------------------+
| command | result |
+-------------+------------------------------------------+
| debug token | aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d |
+-------------+------------------------------------------+
1 row in set (0,00 sec)
Подкоманда shutdown отправит серверу сигнал TERM, вызывая его завершение работы. Это может быть опасно, так как никто не хочет случайно остановить продакшен-сервис. Поэтому она требует VIP-подключения и пароля для использования.
Подкоманда crash буквально вызывает сбой. Она может использоваться для тестирования, например, чтобы проверить, как системный менеджер поддерживает живучесть сервиса или проверить возможность отслеживания coredump.
Если некоторые команды окажутся полезными в более общем контексте, их могут перенести из подкоманд debug в более стабильное и общее место (как показано на примере debug tasks и debug sched в таблице).
- CREATE TABLE - Создает новую таблицу
- CREATE TABLE LIKE - Создает таблицу, используя другую в качестве шаблона
- CREATE TABLE LIKE ... WITH DATA - Копирует таблицу
- CREATE SOURCE - Создает источник потребителя Kafka
- CREATE MATERIALIZED VIEW - Преобразование данных из сообщений Kafka
- CREATE MV - То же, что и предыдущая команда
- DESCRIBE - Выводит список полей таблицы и их типы
- ALTER TABLE - Изменяет схему / настройки таблицы
- ALTER TABLE REBUILD SECONDARY - Обновляет/восстанавливает вторичные индексы
- ALTER TABLE type='distributed' - Обновляет/восстанавливает вторичные индексы
- ALTER TABLE RENAME
- ALTER MATERIALIZED VIEW {name} suspended=1 - Приостанавливает или возобновляет потребление из источника Kafka
- DROP TABLE IF EXISTS - Удаляет таблицу (если она существует)
- SHOW TABLES - Показывает список таблиц
- SHOW SOURCES - Показывает список источников Kafka
- SHOW MATERIALIZED VIEWS - Показывает список материализованных представлений
- SHOW MVS - Псевдоним предыдущей команды
- SHOW CREATE TABLE - Показывает SQL команду для создания таблицы
- SHOW TABLE INDEXES - Отображает информацию о доступных вторичных индексах таблицы
- SHOW TABLE STATUS - Показывает информацию о текущем состоянии таблицы
- SHOW TABLE SETTINGS - Показывает настройки таблицы
- SHOW LOCKS - Показывает информацию о замороженных таблицах
- INSERT - Добавляет новые документы
- REPLACE - Заменяет существующие документы новыми
- REPLACE .. SET - Заменяет одно или несколько полей в таблице
- UPDATE - Выполняет обновление документов на месте
- DELETE - Удаляет документы
- TRUNCATE TABLE - Удаляет все документы из таблицы
- BACKUP - Создает резервные копии таблиц
- SELECT - Поиск
- WHERE - Фильтры
- GROUP BY - Группировка результатов поиска
- GROUP BY ORDER - Сортировка групп
- GROUP BY HAVING - Фильтрация групп
- OPTION - Опции запроса
- FACET - Фасетный поиск
- SUB-SELECTS - Использование подзапросов SELECT
- JOIN - Объединение таблиц в SELECT
- EXPLAIN QUERY - Показывает план выполнения запроса без его запуска
- SHOW META - Показывает расширенную информацию о выполненном запросе
- SHOW PROFILE - Показывает информацию профилирования выполненного запроса
- SHOW PLAN - Показывает план выполнения запроса после его выполнения
- SHOW WARNINGS - Показывает предупреждения последнего запроса
- FLUSH ATTRIBUTES - Принудительно сбрасывает обновленные атрибуты на диск
- FLUSH HOSTNAMES - Обновляет IP-адреса, связанные с именами хостов агентов
- FLUSH LOGS - Инициирует повторное открытие файлов логов searchd и запросов (аналогично USR1)
- FLUSH RAMCHUNK - Принудительно создает новый дисковый чанк
- FLUSH TABLE - Сбрасывает RAM-чанк таблицы реального времени на диск
- OPTIMIZE TABLE - Помещает таблицу реального времени в очередь на оптимизацию
- ATTACH TABLE - Перемещает данные из простой таблицы в таблицу реального времени
- IMPORT TABLE - Импортирует ранее созданную RT или PQ таблицу в сервер, работающий в режиме RT
- JOIN CLUSTER - Присоединяется к кластеру репликации
- ALTER CLUSTER - Добавляет/удаляет таблицу в кластере репликации
- SET CLUSTER - Изменяет настройки кластера репликации
- DELETE CLUSTER - Удаляет кластер репликации
- RELOAD TABLE - Поворачивает простую таблицу
- RELOAD TABLES - Поворачивает все простые таблицы
- CALL SUGGEST, CALL QSUGGEST - Предлагает исправленные слова
- CALL SNIPPETS - Создает выделенный фрагмент результатов из предоставленных данных и запроса
- CALL PQ - Выполняет перколяционный запрос
- CALL KEYWORDS - Используется для проверки того, как токенизируются ключевые слова. Также позволяет получить токенизированные формы предоставленных ключевых слов
- CALL AUTOCOMPLETE - Автозаполняет ваш поисковый запрос
- CREATE FUNCTION - Устанавливает пользовательскую функцию (UDF)
- DROP FUNCTION - Удаляет пользовательскую функцию (UDF)
- CREATE PLUGIN - Устанавливает плагин
- CREATE BUDDY PLUGIN - Устанавливает Buddy плагин
- DROP PLUGIN - Удаляет плагин
- DROP BUDDY PLUGIN - Удаляет Buddy плагин
- RELOAD PLUGINS - Перезагружает все плагины из указанной библиотеки
- ENABLE BUDDY PLUGIN - Реактивирует ранее отключенный Buddy плагин
- DISABLE BUDDY PLUGIN - Деактивирует активный Buddy плагин
- SHOW STATUS - Отображает ряд полезных счетчиков производительности
- SHOW THREADS - Показывает все текущие активные клиентские потоки
- SHOW VARIABLES - Показывает переменные сервера и их значения
- SHOW VERSION - Предоставляет подробную информацию о версиях различных компонентов инстанса.
- /sql - Выполняет SQL-запрос через HTTP JSON
- /cli - Предоставляет HTTP интерфейс командной строки
- /insert - Вставляет документ в таблицу реального времени
- /pq/tbl_name/doc - Добавляет правило PQ в перколяционную таблицу
- /update - Обновляет документ в таблице реального времени
- /replace - Заменяет существующий документ в таблице реального времени или вставляет его, если он не существует
- /pq/tbl_name/doc/N?refresh=1 - Заменяет правило PQ в перколяционной таблице
- /delete - Удаляет документ из таблицы
- /bulk - Выполняет несколько операций вставки, обновления или удаления за один вызов. Подробнее о массовой вставке здесь.
- /search - Выполняет поиск
- /search -> knn - Выполняет KNN векторный поиск
- /pq/tbl_name/search - Выполняет обратный поиск в перколяционной таблице
- /tbl_name/_mapping - Создает схему таблицы в стиле Elasticsearch
- access_plain_attrs
- access_blob_attrs
- access_doclists
- access_hitlists
- access_dict
- attr_update_reserve
- bigram_freq_words
- bigram_index
- blend_chars
- blend_mode
- charset_table
- dict
- docstore_block_size
- docstore_compression
- docstore_compression_level
- embedded_limit
- exceptions
- expand_keywords
- global_idf
- hitless_words
- html_index_attrs
- html_remove_elements
- html_strip
- ignore_chars
- index_exact_words
- index_field_lengths
- index_sp
- index_token_filter
- index_zones
- infix_fields
- inplace_enable
- inplace_hit_gap
- inplace_reloc_factor
- inplace_write_factor
- jieba_hmm
- jieba_mode
- jieba_user_dict_path
- killlist_target
- max_substring_len
- min_infix_len
- min_prefix_len
- min_stemming_len
- min_word_len
- morphology
- morphology_skip_fields
- ngram_chars
- ngram_len
- overshort_step
- path
- phrase_boundary
- phrase_boundary_step
- prefix_fields
- preopen
- read_buffer_docs
- read_buffer_hits
- regexp_filter
- stopwords
- stopword_step
- stopwords_unstemmed
- type
- wordforms
- local
- agent
- agent_connect_timeout
- agent_blackhole
- agent_persistent
- agent_query_timeout
- agent_retry_count
- ha_strategy
- mirror_retry_count
- rt_attr_bigint
- rt_attr_bool
- rt_attr_float
- rt_attr_float_vector
- rt_attr_json
- rt_attr_multi_64
- rt_attr_multi
- rt_attr_string
- rt_attr_timestamp
- rt_attr_uint
- rt_field
- rt_mem_limit
- diskchunk_flush_write_timeout
- diskchunk_flush_search_timeout
- OR
- MAYBE
- NOT - оператор NOT
- @field - оператор поиска по полю
- @field[N] - модификатор ограничения позиции поля
- @(field1,field2,...) - оператор поиска по нескольким полям
- @!field - оператор игнорирования поля при поиске
- @!(field1,field2,...) - оператор игнорирования нескольких полей при поиске
- @* - оператор поиска по всем полям
- "word1 word2 ... " - оператор поиска фразы
- "word1 word2 ... "~N - оператор поиска по близости
- "word1 word2 ... "/N - оператор кворумного совпадения
- word1 << word2 << word3 - оператор строгого порядка
- =word1 - модификатор точной формы
- ^word1 - модификатор начала поля
- word2$ - модификатор конца поля
- word^N - модификатор усиления IDF ключевого слова
- word1 NEAR/N word2 - NEAR, обобщённый оператор близости
- word1 NOTNEAR/N word2 - NOTNEAR, оператор отрицательного утверждения
- word1 PARAGRAPH word2 PARAGRAPH "word3 word4" - оператор PARAGRAPH
- word1 SENTENCE word2 SENTENCE "word3 word4" - оператор SENTENCE
- ZONE:(h3,h4) - оператор ограничения ZONE
- ZONESPAN:(h2) - оператор ограничения ZONESPAN
- @@relaxed - подавляет ошибки о пропущенных полях
- t?st - операторы подстановки
- REGEX(/pattern/) - оператор REGEX
- ABS() - Возвращает абсолютное значение
- ATAN2() - Возвращает арктангенс двух аргументов
- BITDOT() - Возвращает сумму произведений каждого бита маски на его вес
- CEIL() - Возвращает наименьшее целое число, большее или равное аргументу
- COS() - Возвращает косинус аргумента
- CRC32() - Возвращает значение CRC32 аргумента
- EXP() - Возвращает экспоненту аргумента
- FIBONACCI() - Возвращает N-е число Фибоначчи, где N — целочисленный аргумент
- FLOOR() - Возвращает наибольшее целое значение, меньшее или равное аргументу
- GREATEST() - Принимает JSON/MVA массив в качестве аргумента и возвращает наибольшее значение в этом массиве
- IDIV() - Возвращает результат целочисленного деления первого аргумента на второй аргумент
- LEAST() - Принимает JSON/MVA массив в качестве аргумента и возвращает наименьшее значение в этом массиве
- LN() - Возвращает натуральный логарифм аргумента
- LOG10() - Возвращает десятичный логарифм аргумента
- LOG2() - Возвращает двоичный логарифм аргумента
- MAX() - Возвращает большее из двух аргументов
- MIN() - Возвращает меньшее из двух аргументов
- POW() - Возвращает первый аргумент, возведённый в степень второго аргумента
- RAND() - Возвращает случайное число с плавающей точкой от 0 до 1
- SIN() - Возвращает синус аргумента
- SQRT() - Возвращает квадратный корень из аргумента
- BM25F() - Возвращает точное значение формулы BM25F
- EXIST() - Заменяет несуществующие столбцы значениями по умолчанию
- GROUP_CONCAT() - Формирует список значений атрибута всех документов в группе, разделённых запятыми
- HIGHLIGHT() - Подсвечивает результаты поиска
- MIN_TOP_SORTVAL() - Возвращает значение ключа сортировки худшего найденного элемента в текущих топ-N совпадениях
- MIN_TOP_WEIGHT() - Возвращает вес худшего найденного элемента в текущих топ-N совпадениях
- PACKEDFACTORS() - Выводит весовые коэффициенты
- REMOVE_REPEATS() - Удаляет повторяющиеся скорректированные строки с одинаковым значением 'column'
- WEIGHT() - Возвращает оценку совпадения полнотекстового поиска
- ZONESPANLIST() - Возвращает пары совпадающих зональных интервалов
- QUERY() - Возвращает текущий полнотекстовый запрос
- BIGINT() - Принудительно преобразует целочисленный аргумент в 64-битный тип
- DOUBLE() - Принудительно преобразует данный аргумент в тип с плавающей точкой
- INTEGER() - Принудительно преобразует данный аргумент в 64-битный знаковый тип
- TO_STRING() - Принудительно преобразует аргумент в строковый тип
- UINT() - Преобразует данный аргумент в 32-битное беззнаковое целое число
- UINT64() - Преобразует данный аргумент в 64-битное беззнаковое целое число
- SINT() - Интерпретирует 32-битное беззнаковое целое число как знаковое 64-битное целое число
- ALL() - Возвращает 1, если условие истинно для всех элементов массива
- ANY() - Возвращает 1, если условие истинно для любого элемента массива
- CONTAINS() - Проверяет, находится ли точка (x,y) внутри заданного полигона
- IF() - Проверяет, равен ли первый аргумент 0.0, возвращает второй аргумент, если он не равен нулю, или третий, если равен
- IN() - Возвращает 1, если первый аргумент равен любому из остальных аргументов, иначе 0
- INDEXOF() - Перебирает все элементы массива и возвращает индекс первого совпадающего элемента
- INTERVAL() - Возвращает индекс аргумента, который меньше первого аргумента
- LENGTH() - Возвращает количество элементов в MVA
- REMAP() - Позволяет делать исключения из значений выражения в зависимости от значений условий
- NOW() - Возвращает текущую метку времени в виде INTEGER
- CURTIME() - Возвращает текущее время в локальном часовом поясе
- CURDATE() - Возвращает текущую дату в локальном часовом поясе
- UTC_TIME() - Возвращает текущее время в часовом поясе UTC
- UTC_TIMESTAMP() - Возвращает текущие дату и время в часовом поясе UTC
- SECOND() - Возвращает целочисленное значение секунд из аргумента метки времени
- MINUTE() - Возвращает целочисленное значение минут из аргумента метки времени
- HOUR() - Возвращает целочисленный час из аргумента временной метки
- DAY() - Возвращает целочисленный день из аргумента временной метки
- MONTH() - Возвращает целочисленный месяц из аргумента временной метки
- QUARTER() - Возвращает целочисленный квартал года из аргумента временной метки
- YEAR() - Возвращает целочисленный год из аргумента временной метки
- DAYNAME() - Возвращает название дня недели для заданного аргумента временной метки
- MONTHNAME() - Возвращает название месяца для заданного аргумента временной метки
- DAYOFWEEK() - Возвращает целочисленный индекс дня недели для заданного аргумента временной метки
- DAYOFYEAR() - Возвращает целочисленный день года для заданного аргумента временной метки
- YEARWEEK() - Возвращает целочисленный год и код дня первого дня текущей недели для заданного аргумента временной метки
- YEARMONTH() - Возвращает целочисленный код года и месяца из аргумента временной метки
- YEARMONTHDAY() - Возвращает целочисленные коды года, месяца и дня из аргумента временной метки
- TIMEDIFF() - Возвращает разницу между временными метками
- DATEDIFF() - Возвращает количество дней между двумя заданными временными метками
- DATE() - Форматирует часть даты из аргумента временной метки
- TIME() - Форматирует часть времени из аргумента временной метки
- DATE_FORMAT() - Возвращает форматированную строку на основе предоставленных аргументов даты и формата
- GEODIST() - Вычисляет геосферное расстояние между двумя заданными точками
- GEOPOLY2D() - Создает полигон с учетом кривизны Земли
- POLY2D() - Создает простой полигон в плоском пространстве
- CONCAT() - Конкатенирует две или более строк
- REGEX() - Возвращает 1, если регулярное выражение совпало со строкой атрибута, и 0 в противном случае
- SNIPPET() - Подсвечивает результаты поиска
- SUBSTRING_INDEX() - Возвращает подстроку строки до указанного количества вхождений разделителя
- CONNECTION_ID() - Возвращает текущий идентификатор соединения
- KNN_DIST() - Возвращает расстояние поиска KNN в векторном пространстве
- LAST_INSERT_ID() - Возвращает идентификаторы документов, вставленных или замененных последним оператором в текущей сессии
- UUID_SHORT() - Возвращает "короткий" универсальный идентификатор, следующий тому же алгоритму, что и для генерации авто-id.
Должны быть помещены в секцию common {} в конфигурационном файле:
- lemmatizer_base - Базовый путь к словарям лемматизатора
- progressive_merge - Определяет порядок слияния дисковых чанков в таблице реального времени
- json_autoconv_keynames - Включение и способ автоконвертации имен ключей в JSON-атрибутах
- json_autoconv_numbers - Автоматически обнаруживает и конвертирует возможные JSON-строки, представляющие числа, в числовые атрибуты
- on_json_attr_error - Действия при обнаружении ошибок формата JSON
- plugin_dir - Расположение динамических библиотек и UDF
indexer — это инструмент для создания plain tables
Должны быть помещены в секцию indexer {} в конфигурационном файле:
- lemmatizer_cache - Размер кэша лемматизатора
- max_file_field_buffer - Максимальный адаптивный буфер для файлового поля
- max_iops - Максимальное количество операций ввода-вывода индексации в секунду
- max_iosize - Максимально допустимый размер операции ввода-вывода
- max_xmlpipe2_field - Максимально допустимый размер поля для источника типа XMLpipe2
- mem_limit - Лимит использования оперативной памяти при индексации
- on_file_field_error - Как обрабатывать ошибки ввода-вывода в файловых полях
- write_buffer - Размер буфера записи
- ignore_non_plain - Игнорировать предупреждения о не-простых таблицах
indexer [OPTIONS] [indexname1 [indexname2 [...]]]
- --all - Перестраивает все таблицы из конфигурации
- --buildstops - Анализирует источник таблицы как при индексировании данных, создавая список индексируемых терминов
- --buildfreqs - Добавляет подсчет частоты в таблицу для --buildstops
- --config, -c - Указывает путь к файлу конфигурации
- --dump-rows - Выгружает строки, полученные из SQL источника(ов), в указанный файл
- --help - Показывает все доступные параметры
- --keep-attrs - Позволяет повторно использовать существующие атрибуты при переиндексации
- --keep-attrs-names - Указывает, какие атрибуты использовать повторно из существующей таблицы
- --merge-dst-range - Применяет заданный диапазон фильтра при слиянии
- --merge-killlists - Изменяет обработку списков удаления при слиянии таблиц
- --merge - Объединяет две простые таблицы в одну
- --nohup - Предотвращает отправку SIGHUP индексатором при включении этой опции
- --noprogress - Скрывает детали прогресса
- --print-queries - Выводит SQL-запросы, отправляемые индексатором в базу данных
- --print-rt - Показывает данные, полученные из SQL источника(ов), в виде INSERT-запросов в таблицу реального времени
- --quiet - Подавляет весь вывод
- --rotate - Запускает ротацию таблиц после построения всех таблиц
- --sighup-each - Запускает ротацию каждой таблицы после её построения
- -v - Показывает версию индексатора
index_converter — это инструмент, предназначенный для конвертации таблиц, созданных с помощью Sphinx/Manticore Search 2.x, в формат таблиц Manticore Search 3.x.
index_converter {--config /path/to/config|--path}
- --config, -c - Путь к файлу конфигурации таблицы
- --index - Указывает, какую таблицу конвертировать
- --path - Устанавливает путь, содержащий таблицу(ы), вместо файла конфигурации
- --strip-path - Удаляет путь из имен файлов, на которые ссылается таблица
- --large-docid - Позволяет конвертировать документы с id больше 2^63
- --output-dir - Записывает новые файлы в указанную папку
- --all - Конвертирует все таблицы из файла конфигурации / пути
- --killlist-target - Устанавливает целевые таблицы для применения списков удаления
searchd — это сервер Manticore.
Должны быть помещены в секцию searchd {} файла конфигурации:
- access_blob_attrs - Определяет, как осуществляется доступ к файлу blob-атрибутов таблицы
- access_doclists - Определяет, как осуществляется доступ к файлу doclists таблицы
- access_hitlists - Определяет, как осуществляется доступ к файлу hitlists таблицы
- access_plain_attrs - Определяет, как поисковый сервер получает доступ к простым атрибутам таблицы
- access_dict - Определяет, как осуществляется доступ к файлу словаря таблицы
- agent_connect_timeout - Таймаут подключения к удалённому агенту
- agent_query_timeout - Таймаут запроса к удалённому агенту
- agent_retry_count - Определяет количество попыток подключения и запроса к удалённым агентам в Manticore
- agent_retry_delay - Определяет задержку перед повторной попыткой запроса к удалённому агенту в случае неудачи
- attr_flush_period - Устанавливает период времени между сбросом обновлённых атрибутов на диск
- binlog_flush - Режим сброса/синхронизации бинарного лога транзакций
- binlog_max_log_size - Максимальный размер файла бинарного лога
- binlog_common - Общий файл бинарного лога для всех таблиц
- binlog_filename_digits - Количество цифр в имени файла бинарного лога
- binlog_flush - Стратегия сброса бинарного лога
- binlog_path - Путь к файлам бинарного лога
- client_timeout - Максимальное время ожидания между запросами при использовании постоянных соединений
- collation_libc_locale - Локаль libc сервера
- collation_server - Колляция сервера по умолчанию
- data_dir - Путь к каталогу данных, где Manticore хранит всё (RT режим)
- diskchunk_flush_write_timeout - Таймаут для автоматического сброса RAM-чанка, если в него не происходит запись
- diskchunk_flush_search_timeout - Таймаут для предотвращения автоматического сброса RAM-чанка, если в таблице не выполняются поиски
- docstore_cache_size - Максимальный размер блоков документов из хранилища документов, удерживаемых в памяти
- expansion_limit - Максимальное количество расширенных ключевых слов для одного шаблона с подстановочными знаками
- grouping_in_utc - Включает использование часового пояса UTC для группировки временных полей
- ha_period_karma - Размер окна статистики зеркала агента
- ha_ping_interval - Интервал между пингами зеркала агента
- hostname_lookup - Стратегия обновления имён хостов
- jobs_queue_size - Определяет максимальное количество "заданий", разрешённых в очереди одновременно
- join_batch_size - Определяет размер пакета для объединения таблиц для балансировки производительности и использования памяти
- join_cache_size - Определяет размер кэша для повторного использования результатов JOIN-запросов
- kibana_version_string – Строка версии сервера, отправляемая в ответ на запросы Kibana
- listen - Указывает IP-адрес и порт или путь к Unix-доменному сокету, на которых searchd слушает
- listen_backlog - Очередь прослушивания TCP
- listen_tfo - Включает флаг TCP_FASTOPEN для всех слушателей
- log - Путь к файлу журнала сервера Manticore
- max_batch_queries - Ограничивает количество запросов в пакете
- max_connections - Максимальное количество активных соединений
- max_filters - Максимально допустимое количество фильтров на запрос
- max_filter_values - Максимально допустимое количество значений в фильтре
- max_open_files - Максимальное количество файлов, которые сервер может открыть
- max_packet_size - Максимально допустимый размер сетевого пакета
- mysql_version_string - Строка версии сервера, возвращаемая через протокол MySQL
- net_throttle_accept - Определяет, сколько клиентов принимается на каждой итерации сетевого цикла
- net_throttle_action - Определяет, сколько запросов обрабатывается на каждой итерации сетевого цикла
- net_wait_tm - Управляет интервалом busy loop сетевого потока
- net_workers - Количество сетевых потоков
- network_timeout - Таймаут сети для клиентских запросов
- node_address - Указывает сетевой адрес узла
- persistent_connections_limit - Максимальное количество одновременных постоянных соединений с удалёнными постоянными агентами
- pid_file - Путь к файлу pid сервера Manticore
- predicted_time_costs - Затраты для модели предсказания времени запроса
- preopen_tables - Определяет, следует ли принудительно предварительно открывать все таблицы при запуске
- pseudo_sharding - Включает псевдо-шардинг для поисковых запросов к обычным и реальным таблицам
- qcache_max_bytes - Максимальный объем оперативной памяти, выделяемый для кэшированных наборов результатов
- qcache_thresh_msec - Минимальный порог времени выполнения запроса для кэширования результата
- qcache_ttl_sec - Период хранения кэшированного набора результатов
- query_log - Путь к файлу журнала запросов
- query_log_format - Формат журнала запросов
- query_log_min_msec - Предотвращает логирование слишком быстрых запросов
- query_log_mode - Режим прав доступа к файлу журнала запросов
- read_buffer_docs - Размер буфера чтения на ключевое слово для списков документов
- read_buffer_hits - Размер буфера чтения на ключевое слово для списков попаданий
- read_unhinted - Размер чтения без подсказок
- rt_flush_period - Как часто Manticore сбрасывает в диск RAM-чонки реальных таблиц
- rt_merge_iops - Максимальное количество операций ввода-вывода (в секунду), разрешенных для потока слияния чанков реального времени
- rt_merge_maxiosize - Максимальный размер операции ввода-вывода, разрешенный для потока слияния чанков реального времени
- seamless_rotate - Предотвращает зависания searchd при ротации таблиц с огромным объемом данных для предварительного кэширования
- secondary_indexes - Включает использование вторичных индексов для поисковых запросов
- server_id - Идентификатор сервера, используемый как зерно для генерации уникального ID документа
- shutdown_timeout - Таймаут
--stopwaitдля searchd - shutdown_token - SHA1-хэш пароля, необходимого для вызова команды
shutdownиз VIP SQL соединения - snippets_file_prefix - Префикс, добавляемый к локальным именам файлов при генерации сниппетов в режиме
load_files - sphinxql_state - Путь к файлу, в котором будет сериализовано текущее состояние SQL
- sphinxql_timeout - Максимальное время ожидания между запросами от клиента MySQL
- ssl_ca - Путь к файлу сертификата удостоверяющего центра SSL
- ssl_cert - Путь к SSL-сертификату сервера
- ssl_key - Путь к ключу SSL-сертификата сервера
- subtree_docs_cache - Максимальный размер кэша документов общего поддерева
- subtree_hits_cache - Максимальный размер кэша попаданий общего поддерева на запрос
- timezone - Часовой пояс, используемый функциями, связанными с датой и временем
- thread_stack - Максимальный размер стека для задачи
- unlink_old - Следует ли удалять копии таблиц с расширением .old при успешной ротации
- watchdog - Включить или отключить сторожевой таймер сервера Manticore
searchd [OPTIONS]
- --config, -c - Указывает путь к файлу конфигурации
- --console - Принудительно запускает сервер в консольном режиме
- --coredump - Включает сохранение core dump при сбое
- --cpustats - Включает отчет о времени работы CPU
- --delete - Удаляет службу Manticore из Microsoft Management Console и других мест регистрации служб
- --force-preread - Запрещает серверу обслуживать входящие соединения до предварительного чтения файлов таблиц
- --help, -h - Показывает все доступные параметры
- --table (--index) - Ограничивает сервер обслуживанием только указанной таблицы
- --install - Устанавливает searchd как службу в Microsoft Management Console
- --iostats - Включает отчет о вводе/выводе
- --listen, -l - Переопределяет listen из файла конфигурации
- --logdebug, --logdebugv, --logdebugvv - Включает дополнительный отладочный вывод в журнал сервера
- --logreplication - Включает дополнительный отладочный вывод репликации в журнал сервера
- --new-cluster - Инициализирует кластер репликации и устанавливает сервер в качестве эталонного узла с защитой перезапуска кластера
- --new-cluster-force - Инициализирует кластер репликации и устанавливает сервер в качестве эталонного узла, обходя защиту перезапуска кластера
- --nodetach - Запускает searchd в переднем плане
- --ntservice - Используется Microsoft Management Console для запуска searchd как службы на платформах Windows
- --pidfile - Переопределяет pid_file в конфигурационном файле
- --port, p - Указывает порт, на котором searchd должен слушать, игнорируя порт, указанный в конфигурационном файле
- --replay-flags - Устанавливает дополнительные параметры воспроизведения бинарного лога
- --servicename - Присваивает указанное имя searchd при установке или удалении службы, как отображается в Microsoft Management Console
- --status - Запрашивает статус работающей службы поиска
- --stop - Останавливает сервер Manticore
- --stopwait - Корректно останавливает сервер Manticore
- --strip-path - Удаляет пути из всех имен файлов, на которые ссылается таблица
- -v - Отображает информацию о версии
- MANTICORE_TRACK_DAEMON_SHUTDOWN - Включает подробное логирование при завершении работы searchd
Разнообразные функции обслуживания таблиц, полезные для устранения неполадок.
indextool <command> [options]
Используется для вывода различной отладочной информации, связанной с физической таблицей.
indextool <command> [options]
- --config, -c - Указывает путь к конфигурационному файлу
- --quiet, -q - Запускает indextool в тихом режиме; без вывода баннера и т.п.
- --help, -h - Выводит список всех доступных параметров
- -v - Отображает информацию о версии
- Indextool - Проверяет конфигурационный файл
- --buildidf - Создаёт IDF-файл из одного или нескольких дампов словаря
- --build-infixes - Создаёт инфиксы для существующей таблицы dict=keywords
- --dumpheader - Быстро выводит заголовочный файл указанной таблицы
- --dumpconfig - Выводит определение таблицы из указанного заголовочного файла в формате, близком к manticore.conf
- --dumpheader - Выводит заголовок таблицы по имени, осуществляя поиск пути заголовка в конфигурационном файле
- --dumpdict - Выводит словарь таблицы
- --dumpdocids - Выводит идентификаторы документов по имени таблицы
- --dumphitlist - Выводит все вхождения указанного ключевого слова/ID в заданной таблице
- --docextract - Выполняет проверку таблицы на всем словаре/документах/вхождениях и собирает все слова и вхождения, относящиеся к запрошенному документу
- --fold - Тестирует токенизацию на основе настроек таблицы
- --htmlstrip - Фильтрует STDIN с использованием настроек HTML-стриппера для указанной таблицы
- --mergeidf - Объединяет несколько .idf файлов в один
- --morph - Применяет морфологию к переданному STDIN и выводит результат в stdout
- --check - Проверяет файлы данных таблицы на согласованность
- --check-id-dups - Проверяет наличие дублирующихся ID
- --check-disk-chunk - Проверяет один диск-чанк RT таблицы
- --strip-path - Удаляет пути из всех имен файлов, на которые ссылается таблица
- --rotate - Определяет, следует ли проверять таблицу в ожидании ротации при использовании
--check - --apply-killlists - Применяет kill-листы ко всем таблицам, перечисленным в конфигурационном файле
Разбивает составные слова на компоненты.
wordbreaker [-dict path/to/dictionary_file] {split|test|bench}
- STDIN - Принимает строку для разбиения на части
- -dict - Указывает файл словаря для использования
- split|test|bench - Указывает команду
Извлекает содержимое файла словаря в формате ispell или MySpell
spelldump [options] <dictionary> <affix> [result] [locale-name]
- dictionary - Основной файл словаря
- affix - Файл аффиксов для словаря
- result - Указывает место вывода данных словаря
- locale-name - Указывает детали локали для использования
Полный алфавитный список ключевых слов, в настоящее время зарезервированных в синтаксисе Manticore SQL (поэтому они не могут использоваться в качестве идентификаторов).
AND, AS, BY, COLUMNARSCAN, DISTINCT, DIV, DOCIDINDEX, EXPLAIN, FACET, FALSE, FORCE, FROM, IGNORE, IN, INDEXES, INNER, IS, JOIN, KNN, LEFT, LIMIT, MOD, NOT, NO_COLUMNARSCAN, NO_DOCIDINDEX, NO_SECONDARYINDEX, NULL, OFFSET, ON, OR, ORDER, RELOAD, SECONDARYINDEX, SELECT, SYSFILTERS, TRUE
- 2.4.1
- 2.5.1
- 2.6.0
- 2.6.1
- 2.6.2
- 2.6.3
- 2.6.4
- 2.7.0
- 2.7.1
- 2.7.2
- 2.7.3
- 2.7.4
- 2.7.5
- 2.8.0
- 2.8.1
- 2.8.2
- 3.0.0
- 3.0.2
- 3.1.0
- 3.1.2
- 3.2.0
- 3.2.2
- 3.3.0
- 3.4.0
- 3.4.2
- 3.5.0
- 3.5.2
- 3.5.4
- 4.0.2
- 4.2.0
- 5.0.2. Страница установки
- 6.0.0. Страница установки
- 6.0.2. Страница установки
- 6.0.4. Страница установки
- 6.2.0. Страница установки
- 6.2.12. Страница установки
- 6.3.0. Страница установки
- 6.3.2. Страница установки
- 6.3.4. Страница установки
- 6.3.6. Страница установки
- 6.3.8. Страница установки
- 7.0.0. Страница установки
- 7.4.6. Страница установки
- 9.2.14. Страница установки
- 9.3.2. Страница установки
- 10.1.0. Страница установки
- 13.2.3. Страница установки
- 13.6.7. Страница установки
- 13.11.0. Страница установки
- 13.11.1. Страница установки
- 13.13.0. Страница установки
- 14.1.0. Страница установки
- 15.1.0. Страница установки