2016-03-30 5 views
1

私は、ES操作のためにElasticsearch 2.1.1 PHPクライアントを使用しています。私は質問で私のドキュメントを更新したい。そのために私はupdatebyqueryを見つけましたが、これはESの2.0+ versionsでは機能しません。では、クエリで自分のドキュメントを更新する方法はありますか?クエリによる更新Elasticsearch-PHP Client 2.0+

答えて

-1

私もupdateByQueryで苦しんでいたが、あなたはあなたのelasticsearch.ymlはスクリプトを許可するように編集する必要がthis quetion

まず見てみましょう。最後に次の行を追加します。

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); 
+0

このリンクは質問に答えるかもしれませんが、ここでは答えの必須部分を含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](/レビュー/低品質の投稿/ 13470862) – Ahmad

+0

本当にありがとう、ありがとう。 –

+0

(誰に投票しても)あなたはなぜこの回答を落としたのかを理由を挙げてください。私の答えがうまくいかない場合、私はそれを修正するか、もっと詳しく説明してくれるでしょう。そうでなければ、答えは、私がそうであったように立ち往生している他の人々を助ける投票に値すると思います。 –