2016-03-22 9 views
-1

Ich versuche, ein Dokument mit ElasticSearch zu finden und ein Feld darin zu aktualisieren. Der Code ist:finden und aktualisieren Sie ein Dokument in elasticsearch2 mit 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 
     ] 
    ] 
]; 

Der Code wird geben 500 Internal Error. Irgendeine Idee was vermisse ich?

+1

nicht sicher, warum wurde diese Downvoted? – Satya

+0

Was sehen Sie in den ES-Serverprotokollen? – Val

+0

Versuchen Sie, das DeviceId-Feld mit einem neuen Wert zu aktualisieren oder den Wert von deviceId (DeviceID + 1, Beispiel: 4 + 1) zu erhöhen, indem Sie 1 hinzufügen –

Antwort

0

Wenn Sie den Wert von deviceid von 1 (Mittelwert, wenn der Wert von deviceid 4 dann u auf 5 erhöhen kann um 1 ihn hinzufügen) erhöhen wollen, dann unter Code folgen

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

Beispiel:

$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

Verwandte Themen