Deleting is only supported for:
You can delete existing rows (documents) from an existing index based on ID or conditions.
Deleting documents is supported via SQL and HTTP interfaces.
SQL response for successful operation will show the number of rows deleted.
json/delete
is an HTTP endpoint for deleting. The server will respond with a JSON object stating if the operation was successful or not and the number of rows deleted.
To delete all documents from an index it's recommended to use instead the index truncation as it's a much faster operation.
- SQL
- HTTP
DELETE FROM index WHERE where_condition
index
is a name of the index from which the row should be deleted.where_condition
for SQL has the same syntax as in the SELECT statement.
In this example we are deleting all documents that match full-text query dummy
from index named test
:
- SQL
- HTTP
- PHP
select * from test;
delete from test where match ('dummy');
select * from test;
+------+------+-------------+------+
| id | gid | mva1 | mva2 |
+------+------+-------------+------+
| 100 | 1000 | 100,201 | 100 |
| 101 | 1001 | 101,202 | 101 |
| 102 | 1002 | 102,203 | 102 |
| 103 | 1003 | 103,204 | 103 |
| 104 | 1004 | 104,204,205 | 104 |
| 105 | 1005 | 105,206 | 105 |
| 106 | 1006 | 106,207 | 106 |
| 107 | 1007 | 107,208 | 107 |
+------+------+-------------+------+
8 rows in set (0.00 sec)
Query OK, 2 rows affected (0.00 sec)
+------+------+-------------+------+
| id | gid | mva1 | mva2 |
+------+------+-------------+------+
| 100 | 1000 | 100,201 | 100 |
| 101 | 1001 | 101,202 | 101 |
| 102 | 1002 | 102,203 | 102 |
| 103 | 1003 | 103,204 | 103 |
| 104 | 1004 | 104,204,205 | 104 |
| 105 | 1005 | 105,206 | 105 |
+------+------+-------------+------+
6 rows in set (0.00 sec)
Here - deleting a document with id
100 from index named test
:
- SQL
- HTTP
- PHP
delete from test where id=100;
select * from test;
Query OK, 1 rows affected (0.00 sec)
+------+------+-------------+------+
| id | gid | mva1 | mva2 |
+------+------+-------------+------+
| 101 | 1001 | 101,202 | 101 |
| 102 | 1002 | 102,203 | 102 |
| 103 | 1003 | 103,204 | 103 |
| 104 | 1004 | 104,204,205 | 104 |
| 105 | 1005 | 105,206 | 105 |
+------+------+-------------+------+
5 rows in set (0.00 sec)
Manticore SQL allows to use complex conditions for the DELETE
statement.
For example here we are deleting documents that match full-text query dummy
and have attribute mva1
with a value greater than 206 or mva1
values 100 or 103 from index named test
:
- SQL
delete from test where match ('dummy') and ( mva1>206 or mva1 in (100, 103) );
select * from test;
Query OK, 4 rows affected (0.00 sec)
+------+------+-------------+------+
| id | gid | mva1 | mva2 |
+------+------+-------------+------+
| 101 | 1001 | 101,202 | 101 |
| 102 | 1002 | 102,203 | 102 |
| 104 | 1004 | 104,204,205 | 104 |
| 105 | 1005 | 105,206 | 105 |
+------+------+-------------+------+
6 rows in set (0.00 sec)
Here is an example of deleting documents in cluster nodes4
's index test
:
- SQL
- HTTP
- PHP
delete from nodes4:test where id=100;
Array(
[_index] => test
[_id] => 100
[found] => true
[result] => deleted
)