【问题标题】:Elasticsearch 2.3 Delete all documents in a type by query using PHP LIbraryElasticsearch 2.3 使用PHP LIbrary通过查询删除一个类型中的所有文档
【发布时间】:2016-09-19 20:40:06
【问题描述】:

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

是的,我已经安装了 delete-by-query 插件,因此原始请求有效。

我当前的代码:

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

结果

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

从我的错误消息(ID 不能为空)看来,通过查询删除可能是 php 库的限制,仅允许按 id 删除。

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

问题摘要

有没有一种解决方法可以在不接触库代码的情况下使用 elasticsearch php 库通过查询删除?

不用说,但感谢任何花时间查看和帮助解决我的问题的人。干杯。

编辑

如果它有助于我使用:

elasticsearch php库版本v2.1.5

【问题讨论】:

  • 直接(原始)HTTP 请求在工作时是什么样的? (了解这一点将有助于确定是否存在通过库提交此类请求的直接等效项,或者您是否需要编写额外的代码以获得类似的效果)。

标签: php elasticsearch elasticsearch-plugin


【解决方案1】:
$params = [
    "index" => "my_index",
    "type" => "my_type",
    "body" => [
        "query" => [
            "match_all" => (object)[]
        ]
    ]
];

$client->deleteByQuery($params);

根据@Val 's 的回答,U 可能会遇到错误,所以请注意 "match_all" => (object)[] 重新输入。我发现here

【讨论】:

    【解决方案2】:

    你需要使用deleteByQuery() function,像这样:

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

    如果你想看看源代码是可用的here

    【讨论】:

    • 不错。您是否有机会成为该项目的贡献者,可以让合适的人将其添加到 elastic.co/guide/en/elasticsearch/client/php-api/2.0 的库的主要文档中?或者是否有明确的地方概述了库中公开了哪些端点/方法(以避免反复试验检查 ES 中定义的端点在作为库方法调用时是否可以工作)?
    • 另一个名为 @AndreiStefan 的 SO 贡献者应该知道该戳谁。 an opened issue 正是关于这个问题,但它在 1 年前就关闭了。
    • 太棒了。花了将近一个小时试图在其他地方找到这个。很有魅力
    • 酷,很高兴它有帮助。如果您在文档中找不到它,请查看 Github 上的源代码,在源代码中快速搜索您知道是否可行。
    • 是的,您检查源代码的技巧很棒。下次我一定会这样做。再次感谢
    猜你喜欢
    • 2016-08-02
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多