Удаление таблицы выполняется внутренне в 2 шага:
- Таблица очищается (аналогично TRUNCATE)
- Все файлы таблицы удаляются из папки таблицы. Все внешние файлы таблицы, которые использовались таблицей (такие как wordforms, расширения или стоп-слова), также удаляются. Обратите внимание, что эти внешние файлы копируются в папку таблицы при использовании
CREATE TABLE, поэтому оригинальные файлы, указанные вCREATE TABLE, не будут удалены.
Удаление таблицы возможно только когда сервер работает в режиме RT. Можно удалять RT таблицы, PQ таблицы и распределённые таблицы.
- SQL
- JSON
- PHP
- Python
- Python-asyncio
- javascript
- Java
- C#
- Rust
DROP TABLE products;POST /cli -d "DROP TABLE products"$params = [ 'table' => 'products' ];
$response = $client->indices()->drop($params);utilsApi.sql('DROP TABLE products')await utilsApi.sql('DROP TABLE products')res = await utilsApi.sql('DROP TABLE products');sqlresult = utilsApi.sql("DROP TABLE products", true);sqlresult = utilsApi.Sql("DROP TABLE products", true);let sqlresult = utils_api.sql("DROP 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=""}Вот синтаксис оператора DROP TABLE в SQL:
DROP TABLE [IF EXISTS] table_name
При удалении таблицы через SQL можно использовать IF EXISTS, чтобы удалить таблицу только если она существует. Если попытаться удалить несуществующую таблицу с опцией IF EXISTS, ничего не произойдет.
При удалении таблицы через PHP можно добавить необязательный параметр silent, который работает так же, как IF EXISTS.
- SQL
- JSON
- PHP
- Python
- Python-asyncio
- javascript
- Java
- C#
- Rust
DROP TABLE IF EXISTS products;POST /cli -d "DROP TABLE IF EXISTS products"$params =
[
'table' => 'products',
'body' => ['silent' => true]
];
$client->indices()->drop($params);utilsApi.sql('DROP TABLE IF EXISTS products')await utilsApi.sql('DROP TABLE IF EXISTS products')res = await utilsApi.sql('DROP TABLE IF EXISTS products');sqlresult = utilsApi.sql("DROP TABLE IF EXISTS products", true);sqlresult = utilsApi.Sql("DROP TABLE IF EXISTS products", true);let sqlresult = utils_api.sql("DROP TABLE IF EXISTS products", Some(true)).await;{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=""}Таблицу можно очистить с помощью 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 режиме, где применяются настройки из конфигурационного файла. Обратите внимание, чтоTRUNCATEподдерживается только для RT таблиц, а опцияRECONFIGUREможет использоваться с RT таблицами только при работе Manticore в Plain режиме.
С этой опцией очистка и перенастройка таблицы становятся одной атомарной операцией.
- 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 и убедитесь, что он доступен для других узлов в кластере. Подключите новый узел к остальной части кластера с помощью распределенной таблицы и обеспечьте безопасность данных с помощью репликации.