elasticsearch,Php,elasticsearch" /> elasticsearch,Php,elasticsearch" />

Php ';id不能为空。';尝试从ElasticSearch中删除时出错

Php ';id不能为空。';尝试从ElasticSearch中删除时出错,php,elasticsearch,Php,elasticsearch,我有Windowsmachine、ElasticSearch 5.0.0和ElasticSearch的标准PHP客户端,我使用composer安装了该客户端。除删除操作外,所有操作都正常。我无法通过查询删除,因此得到以下错误消息: 未捕获异常 带有的“Elasticsearch\Common\Exceptions\InvalidArgumentException” 消息“id不能为空。” 以下是我尝试删除的方式: $client = ClientBuilder::create()->bui

我有
Windows
machine、
ElasticSearch 5.0.0
ElasticSearch
的标准
PHP
客户端,我使用composer安装了该客户端。除删除操作外,所有操作都正常。我无法通过查询删除,因此得到以下错误消息:

未捕获异常 带有的“Elasticsearch\Common\Exceptions\InvalidArgumentException” 消息“id不能为空。”

以下是我尝试删除的方式:

$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);
那么,我该如何修复它呢?我是否需要安装任何插件?如果需要,我如何在我的Windows计算机上安装插件?

需要一个id,因为它意味着删除单个文档,这就是为什么会出现该错误的原因

为了做您想要做的事情,您需要使用
deleteByQuery
函数,但是在2.x中,还没有添加回来


您可以同时使用PHP客户端。它符合5.0标准。

很高兴它能起到作用!