2017-03-23 9 views
0

どのようにして弾性検索にnodejsドライバを使用すれば、次のようなシナリオが得られますか?このシナリオでは、tvSeries IDが指定されている「タイトル」インデックス内のすべてのドキュメントを更新しなければならず、tvSeriesNumberが与えられている場所はどこですか?問合せでand句を使用する必要があるドキュメントを問合せする方法はありますか。

私は、両方のクエリを満たすドキュメントのみを照合したいと考えています。私はclient.updateByQueryメソッドを使用する必要があることを知っていますが、クエリの本文に何を入れるべきかはわかりません。

答えて

1

これはいかがですか?必要なフィールドを更新するには、スクリプトを変更する必要があります。

client.updateByQuery({ 
     index: "title", 
     type: "type", 
     body: { 
      "query": { 
      "bool": { 
       "filter": [ 
       { "term": { "tvSeriesId": 123} }, 
       { "term": { "tvSeriesNumber": 456} } 
       ] 
      } 
      }, 
      "script": { 
      "inline": "ctx._source.xyz = 'abc'" 
      } 
     } 
    }, function(err, res) { 
     if (err) { 
      reportError(err) 
     } 
     cb(err, res) 
    } 
) 
+0

これは機能します。ありがとう。 Javascript APIのドキュメントは、例があまりにも不十分です。あなたは人生の節約になります:) – Nate

+0

JSのドキュメントは、 'updateByQuery'呼び出しを行う方法にかなり焦点を当てています。身体の中に置く必要があるものについては、https:// wwwのQuery DSLドキュメントを参照してください.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html – Val

関連する問題