【发布时间】:2016-07-18 00:59:17
【问题描述】:
我正在使用Elasticsearch 2.1.1 php 客户端进行我的ES 操作。我想通过查询更新我的文档。为此,我找到了updatebyquery,但这不适用于 ES 的2.0+ versions。那么有什么新方法可以通过查询更新我的文档吗?
【问题讨论】:
标签: php elasticsearch elasticsearch-plugin
我正在使用Elasticsearch 2.1.1 php 客户端进行我的ES 操作。我想通过查询更新我的文档。为此,我找到了updatebyquery,但这不适用于 ES 的2.0+ versions。那么有什么新方法可以通过查询更新我的文档吗?
【问题讨论】:
标签: php elasticsearch elasticsearch-plugin
我也在为 updateByQuery 苦苦挣扎,看看this quetion
首先您需要编辑您的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);
【讨论】: