Elasticsearch 2.3使用PHP库按查询删除类型中的所有文档

Elasticsearch 2.3使用PHP库按查询删除类型中的所有文档,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我希望能够使用elasticsearch php库通过查询删除文档。实际上,理想情况下,我希望删除类型中的所有文档。 从某种意义上说,我可以使用普通的curl-xdelite请求来实现这一点,但是我无法使用elastic search的PHP库来实现它 是的,我已经安装了deletebyquery插件,这就是原始请求工作的原因 我当前的代码: $params = [ 'index' => 'sanctions_lists', 'type' => $listName,

我希望能够使用elasticsearch php库通过查询删除文档。实际上,理想情况下,我希望删除类型中的所有文档。 从某种意义上说,我可以使用普通的curl-xdelite请求来实现这一点,但是我无法使用elastic search的PHP库来实现它

是的,我已经安装了
deletebyquery
插件,这就是原始请求工作的原因

我当前的代码:

$params = [
    'index' => 'sanctions_lists',
    'type' => $listName,
    'body' => [
        'query' => [
            'match_all' => []
        ]
    ]
];
return $this->delete($params);
导致

Client.php第1440行中的InvalidArgumentException: id不能为空

从我的错误消息(ID不能为null)中可以看出,按查询删除可能是php库仅允许按ID删除的限制

如果我必须在我的应用程序中执行这个函数的原始HTTP请求,而php库对我在应用程序中的其他查询非常有用,这会有点烦人

问题摘要

使用elasticsearch php库而不触及库代码,是否有一种通过查询删除的变通方法

不言而喻,但感谢任何人谁花任何时间来查看和帮助我的问题。干杯

编辑

如果有助于我使用:

elasticsearch php库版本
v2.1.5

您需要使用,如下所示:

$params = [
    'index' => 'sanctions_lists',
    'type' => $listName,
    'body' => [
        'query' => [
            'match_all' => []
        ]
    ]
];
return $this->deleteByQuery($params);
如果你想看一看,源代码是可用的


根据答案,您可能会遇到错误,因此请注意“match_all”=>(object)[]重新键入。我发现直接(原始)HTTP请求在工作时是什么样子的?(了解这一点将有助于弄清楚是否存在通过库提交此类请求的直接等价物,或者您是否需要编写额外的代码来获得类似的效果)。您是否有可能是该项目的贡献者,能够找到合适的人将其添加到图书馆的主文档中?或者是否有明确的地方概括了库中公开了哪些端点/方法(以避免反复检查ES中定义的端点在被称为库方法时是否可以工作)?另一个名为的贡献者应该知道该找谁。确实存在这个问题,但它在一年前就关闭了。太棒了。花了将近一个小时试图在其他地方找到这个。很高兴它能帮上忙。如果您在文档中找不到,请查看Github上的源代码,快速搜索源代码,您就知道这是否可行。是的,检查源代码是一个很好的提示。我下次一定会那样做。再次感谢
$params = [
    "index" => "my_index",
    "type" => "my_type",
    "body" => [
        "query" => [
            "match_all" => (object)[]
        ]
    ]
];

$client->deleteByQuery($params);