У меня есть следующий код для удаления документов из эластичного поиска.
public function deleteByQuery(){
$client = $this->_connectElasticSearchClient();
$params = [
'index' => $this->_indexName,
'type' => $this->_typeName,
'body' => [
'query' => [
'match' => [
'brand' => 'apple'
]
]
]
];
$response = $client->deleteByQuery($params);
print_r($response);die;
}
В ответ я получаю следующее.
{
"found": false,
"_index": "gadgets",
"_type": "products",
"_id": "_query",
"_version": 1,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
}
}
Попытался изменить строку запроса и all.but бесполезно. При поиске по вышеуказанному запросу я также получаю данные.
Я использую Elasticsearch-PHP Client.
Поскольку вы используете Elasticsearch 2.1, вам нужно знать, что функция удаления по запросу была удален из ядра а также перешел в выделенный плагин.
Вам нужно сначала установить этот плагин, чтобы ваш PHP-код работал.
./bin/plugin install delete-by-query
Других решений пока нет …