您的位置:首页 > 产品设计 > UI/UE

php使用Elasticsearch-api之update_by_query操作

2017-04-11 22:41 681 查看
update_by_query是elasticsearch通过查询条件进行文档更新操作
使用update_by_query要满足如下条件:

1、根据查询条件进行文档更新的API是在Elasticsearch2.3+以上版本加上的

2、在Elasticsearch配置文件elasticsearch.ymf中加入如下配置项

script.inline: on

script.indexed: on
PHP使用update_by_query代码如下
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'bool' => [
'must' => [
'range' => [
'age' => [
'gt' => '20',
'lt' => '40'
]
]
]
]
],
'script' => [
'inline' => "ctx._source.name=\"青年人\";  ctx._source.age=30"
]
]
];
$client = Elasticsearch\ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
$res = $client->updateByQuery($params);

执行后的响应体例子如下
{
"took" : 639,    #从整个操作的开始到结束的毫秒数。
"deleted": 0,    #删除的数目
"batches": 1,   #通过查询删除的滚动响应数量。
"version_conflicts": 2,   #由查询命令删除的版本冲突数。
"retries": 0,    #查询删除的重试次数是响应于完整队列
"throttled_millis": 0,   #请求睡眠符合的毫秒数requests_per_second。
"failures" : [ ]   #所有索引失败的数组。如果这是非空的,那么请求因为这些失败而中止。
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息