gpt4 book ai didi

php - 通过查询更新(updateByQuery)Elasticsearch-PHP

转载 作者:行者123 更新时间:2023-12-03 01:00:14 24 4
gpt4 key购买 nike

我正在使用 Elasticsearch 2.3 以及官方php驱动程序 updateByQuery 给我在php中使用的麻烦。对于如何使用它的一些帮助将不胜感激。

        $client = \Elasticsearch\ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
# Request
$updateRequest = [
'index' => 'gorocket',
'type' => 'logs',
'body' => [
'query' => [
'filtered' => [
'filter' => [
'bool' => [
'must' =>
[
[
'match' => [ 'enabled' => 1 ],
],
]
]
]
]
]
]
]
];
# Update
$results = $client->updateByQuery($updateRequest);
基本上我想更新几个与某个查询匹配的 文档字段(名称,价格)
谢谢。

最佳答案

因此,借助CURL api的工作原理,我设法提出了一种方法。

首先,您需要编辑elasticsearch.yml以允许脚本。最后添加以下几行。

script.engine.groovy.inline.search: on
script.engine.groovy.inline.aggs: on
script.engine.groovy.inline.update: on

之后,您可以开始使用查询作为下面的示例进行批处理更新。
    $client = \Elasticsearch\ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
# Request
$updateRequest = [
'index' => 'testindex',
'type' => 'logs',
'conflicts' => 'proceed',
'body' => [
'query' => [
'filtered' => [
'filter' => [
'bool' => [
'must' =>
[
[
'match' => [ 'enabled' => 1 ],
],
]
]
]
]
],
'script' => [
'inline' => 'ctx._source.enabled = value',
'params' => [
'value' => 0
]
]
]
]
];
# Update
$results = $client->updateByQuery($updateRequest);

而已。到目前为止,它并不容易且没有很好的文档记录。

关于php - 通过查询更新(updateByQuery)Elasticsearch-PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39156405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com