php使用Elasticsearch-api之update_by_query操作

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" : [ ]   #所有索引失敗的數組。如果這是非空的,那麼請求因爲這些失敗而中止。
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章