我有ElasticSearch 5.0.0
计算机,PHP
和ElasticSearch
的标准$client = ClientBuilder::create()->build();
$params = [
'index' => 'layers'
'type' => 'layers_type'
'body' => [
'bool' => [
'should' => [
[
'multi_match' => [
'query' => ["304"],
'fields' => ["id"] // not a surrogate _id, by my own id, that is a part of my index properties
]
]
]
]
]
];
$client->delete($params);
客户端,我使用composer安装。一切正常,除了删除操作。我无法通过查询删除,因此得到此错误消息:
未捕获的异常 'Elasticsearch \ Common \ Exceptions \ InvalidArgumentException'with 消息'id不能为空。'
这是我尝试删除的方式:
innerHTML
那么,我该如何解决呢?我是否需要安装任何插件?如果是,我该如何在我的Windows机器上执行此操作?
答案 0 :(得分:1)
delete
function需要一个ID,因为它意味着删除单个文档,这就是您收到该错误的原因。
为了做你想做的事,你需要deleteByQuery
函数,但需要2.x中的it has been removed而不是添加回来(尚未)。
您可以在此期间使用Elastica PHP客户端。它符合5.0和supports the deleteByQuery feature。