Проблема с Manticore Search: таблица news не найдена

    При попытке подключиться к Manticore Search через Docker возникает ошибка: SHOW TABLE STATUS requires an existing table. Индексация данных проходит успешно, но таблица не обнаруживается. Ниже приведены детали конфигурации и описание проблемы.

    Конфигурация Docker

    manticore:
        build: data/docker/manticore
        restart: always
        volumes:
          - ./data/docker-files/manticore/data:/var/lib/manticore/data
          - ./data/docker-files/manticore/logs:/var/log/manticore
          - ./data/docker/manticore/manticore.conf.dist:/etc/manticoresearch/manticore.conf
        ports:
          - 9306:9306
          - 9308:9308
          - 9312:9312
        depends_on:
          - mysql
        command: sh -c "sleep 10 && indexer --all --rotate && searchd --nodetach"

    Конфигурация Manticore

    Источник данных (source)

    source main
    {
        type          = mysql
        sql_db        = bd
        sql_query_pre = SET CHARACTER_SET_RESULTS=utf8
        sql_query_pre = SET NAMES utf8
        sql_user      = tipa_user
        sql_pass      = tipa pass
        sql_port      = 3306
        sql_host      = mysql
    }
    
    searchd
    {
        listen = 9312
        listen = 9306:mysql
        listen = 9308:http
        pid_file = /run/manticore/searchd.pid
    }
    
    source news : main
    {
        sql_query = \
                SELECT \
                    post_id, \
                    title, \
                    intro, \
                    content \
                FROM \
                    news\
                WHERE \
                    object_type_id = 3
    
        sql_attr_uint = post_id
    }

    Таблица (table)

    table news
    {
        source = news
        path = /var/lib/manticore/data/news
        morphology           = stem_ru, stem_enru
        min_word_len         = 2
        expand_keywords      = 1
        html_strip           = 1
    }

    В каталоге data создаются индексные файлы.

    Код подключения к клиенту

    use Manticoresearch\Client;
    
    class ManticoreSearch
    {
        private ?Client $_client = null;
    
        public function connect(): void
        {
            if ($this->_client === null || !empty($this->_client->getConnections())) {
                $this->_client = new Client([
                    'host' => 'manticore',
                    'port' => 9308,
                ]);
                var_dump($this->_client->table('news')->status());
            }
            exit;
        }
    }

    Описание проблемы

    • При выполнении кода выводится ошибка: SHOW TABLE STATUS requires an existing table
    • Индексация выполняется успешно, но таблица не распознается
    • Возможные причины: несоответствие имени таблицы, неправильная конфигурация или задержка после индексации

    Вопрос

    Как правильно настроить Manticore Search в Docker, чтобы таблица news была доступна после индексации?