Таблицу можно очистить с помощью SQL-запроса TRUNCATE TABLE или функции клиента PHP truncate().
Вот синтаксис для SQL-запроса:
TRUNCATE TABLE table_name [WITH RECONFIGURE]
При выполнении этого запроса RT или распределённая таблица полностью очищается. Данные в памяти удаляются, все файлы данных таблицы разрываются, и освобождаются связанные бинарные логи.
Для очистки распределённой таблицы используйте синтаксис без опции with reconfigure. Просто выполните стандартный запрос TRUNCATE для вашей распределённой таблицы.
TRUNCATE TABLE distributed_table
ПРИМЕЧАНИЕ. Очистка распределённой таблицы требует Manticore Buddy. Если это не работает, убедитесь, что Buddy установлен.
Таблицу также можно очистить с помощью DELETE FROM index WHERE id>0, но это не рекомендуется, так как работает медленнее, чем TRUNCATE.
- SQL
- JSON
- PHP
- Python
- Python-asyncio
- javascript
- Java
- C#
- Rust
TRUNCATE TABLE products;POST /cli -d "TRUNCATE TABLE products"$params = [ 'table' => 'products' ];
$response = $client->indices()->truncate($params);utilsApi.sql('TRUNCATE TABLE products')await utilsApi.sql('TRUNCATE TABLE products')res = await utilsApi.sql('TRUNCATE TABLE products');utilsApi.sql("TRUNCATE TABLE products", true);utilsApi.Sql("TRUNCATE TABLE products", true);utils_api.sql("TRUNCATE TABLE products", Some(true)).await;Query OK, 0 rows affected (0.02 sec){
"total":0,
"error":"",
"warning":""
}Array(
[total] => 0
[error] =>
[warning] =>
){u'error': u'', u'total': 0, u'warning': u''}{u'error': u'', u'total': 0, u'warning': u''}{"total":0,"error":"","warning":""}{total=0, error=, warning=}{total=0, error="", warning=""}{total=0, error="", warning=""}Одно из возможных применений этой команды — перед присоединением таблицы.
Когда используется опция RECONFIGURE, новые настройки токенизации, морфологии и другие параметры обработки текста, заданные в конфигурации, вступают в силу после очистки таблицы. В случае если описание схемы в конфигурации отличается от схемы таблицы, новая схема из конфигурации применяется после очистки таблицы.
ПРИМЕЧАНИЕ. Опция
RECONFIGUREимеет смысл только в Plain mode, где применяются настройки из конфигурационного файла. Обратите внимание, чтоTRUNCATEподдерживается только для RT таблиц, а опцияRECONFIGUREможет использоваться с RT таблицами только в Plain mode.
С этой опцией очистка и перенастройка таблицы становятся одной атомарной операцией.
- SQL
- HTTP
- PHP
- Python
- Python-asyncio
- javascript
- Java
- C#
- Rust
TRUNCATE TABLE products with reconfigure;POST /cli -d "TRUNCATE TABLE products with reconfigure"$params = [ 'table' => 'products', 'with' => 'reconfigure' ];
$response = $client->indices()->truncate($params);utilsApi.sql('TRUNCATE TABLE products WITH RECONFIGURE')await utilsApi.sql('TRUNCATE TABLE products WITH RECONFIGURE')res = await utilsApi.sql('TRUNCATE TABLE products WITH RECONFIGURE');utilsApi.sql("TRUNCATE TABLE products WITH RECONFIGURE", true);utilsApi.Sql("TRUNCATE TABLE products WITH RECONFIGURE" ,true);utils_api.sql("TRUNCATE TABLE products WITH RECONFIGURE", Some(true)).await;Query OK, 0 rows affected (0.02 sec){
"total":0,
"error":"",
"warning":""
}Array(
[total] => 0
[error] =>
[warning] =>
){u'error': u'', u'total': 0, u'warning': u''}{u'error': u'', u'total': 0, u'warning': u''}{"total":0,"error":"","warning":""}{total=0, error=, warning=}{total=0, error="", warning=""}Manticore Search — это высокораспределённая система, которая предоставляет все необходимые компоненты для создания высокодоступной и масштабируемой базы данных для поиска. Это включает:
- распределённую таблицу для шардинга
- Зеркалирование для высокой доступности
- Балансировку нагрузки для масштабируемости
- Репликацию для безопасности данных
Manticore Search предлагает большую гибкость в том, как вы настраиваете свой кластер. Ограничений нет, поэтому вы сами можете спроектировать кластер в соответствии с вашими потребностями. Просто изучите перечисленные выше инструменты и используйте их для достижения желаемой цели.
Чтобы добавить новый узел в кластер, просто запустите еще один экземпляр Manticore и убедитесь, что он доступен для остальных узлов кластера. Подключите новый узел к остальным узлам кластера, используя распределенную таблицу, и обеспечьте безопасность данных с помощью репликации.
Для понима как добата табли с уда агents, важно first иметь базовое understanding о distributed tables In this article, we will focus на как использовать distributed table как basis для созда кластер Мanticore instances.
Here is example как split data over 4 servers, each serving one of shards:
- ini
table mydist {
type = distributed
agent = box1:9312:shard1
agent = box2:9312:shard2
agent = box3:9312:shard3
agent = box4:9312:shard4
}In event server failure, distributed table will still work, but results from failed shard will be missing.
Now that we've added mirrors, each shard is found on 2 servers. By default, master (searchd instance with distributed table) will randomly pick one of mirrors.
Mode used for picking mirrors can be set using ha_strategy setting. In addition to default random mode there's also ha_strategy = roundrobin.
More advanced strategies based on latency-weighted probabilities include noerrors and nodeads. These not only take out mirrors with issues but also monitor response times and do balancing. If mirror responds slower (for example, due to some operations running on it), it will receive fewer requests. When mirror recovers and provides better times, it will receive more requests.
- ini
table mydist {
type = distributed
agent = box1:9312|box5:9312:shard1
agent = box2:9312:|box6:9312:shard2
agent = box3:9312:|box7:9312:shard3
agent = box4:9312:|box8:9312:shard4
}