Проблема с 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 была доступна после индексации?