2016-03-22 8 views
-1

ElasticSearchを使用して文書を検索し、その中のフィールドを更新しようとしています。コードは:elasticsearch2でphpを使用して文書を検索して更新する

require_once 'vendor/autoload.php'; 
$client = Elasticsearch\ClientBuilder::create()->build(); 
         $params = [ 
    'index' => 'myIndex', 
    'type' => 'myCollection', 
    'body' => [ 
     'query'=> [ 
       'match'=> [ 
           'accessToken' => $accessToken 
       ] 
     ] , 
     'script' => 'ctx._source.deviceId= deviceId', 
     'params' => [ 
      'deviceId' => $deviceId 
     ], 
     'upsert' => [ 
      'counter' => 1 
     ] 
    ] 
]; 

コードは500 Internal Errorです。私は何が不足しているか考えていますか?

+1

ないように注意してください、なぜこれがdownvotedされましたか? – Satya

+0

ESサーバーのログには何が表示されますか? – Val

+0

deviceIdフィールドを新しい値で更新しようとしていますか、deviceId(deviceid + 1、example:4 + 1)の値を1に増やしたい場合 –

答えて

0

あなたは1でデバイスIDの値を増やす(デバイスIDの値が4であるならば、uはそれに1を加えた5にそれを増やすことができます意味)、その後、コード

'script' => 'ctx._source.deviceId= deviceId', 
    replace with 
    'script' => 'ctx._source.counter += deviceId', 

例の下に従ってください:

$params = [ 
     'index' => 'my_index', 
     'type' => 'my_type', 
     'id' => 'my_id', 
     'body' => [ 
      'script' => 'ctx._source.counter += count', 
      'params' => [ 
       'count' => 4 
      ], 
      'upsert' => [ 
       'counter' => 1 
      ] 
     ] 
    ]; 

    $response = $client->update($params); 

Check i Elasticsearch php

関連する問題