3

次のように、Elasticsearch でドキュメントのインデックスを作成しました。

{
 _parent: chow-demo
 _index: prototype_2013.01.02
 _type: chow-clfg
 _id: Nx4JcvyxTPujkyy0Jq5BNw
 _score: 11.600378
 _source: {
  chow-clfg: {
  @type: chow-clfg
  clfg: Cg5iV00z4woYAAAARQ0
  @timestamp: 2013-01-02T06:26:00.000Z
  count: 1
  }
 }
}

次のコマンドで count フィールドを更新しようとしました。

curl -XPOST 'localhost:9200/prototype_2013.01.02/chow-clfg/Nx4JcvyxTPujkyy0Jq5BNw/_update' -d '{"script":"ctx._source.chow-clfg.count+=num","params":{"num":1}}'

ただし、代わりに次のエラーを受け取りました。

{"error":"RemoteTransportException[[Vesta][inet[/10.15.78.249:9300]][update]]; nested: DocumentMissingException[[prototype_2013.01.02][0] [chow-clfg][Nx4JcvyxTPujkyy0Jq5BNw]: document missing]; ","status":404}

欠けていることは正確に何をしましたか?http://www.elasticsearch.org/guide/reference/api/update.htmlのドキュメントに従っていましたが、機能しません。

また、親フィールドを含めました:

curl -XPOST 'localhost:9200/prototype_2013.01.02/chow-clfg/Nx4JcvyxTPujkyy0Jq5BNw/_update' -d '{"parent":"chow-demo","script":"ctx._source.chow-clfg.count+=num","params":{"num":1}}'

それでもうまくいきませんでした。誰でもこのエラーで私を助けることができますか?

4

1 に答える 1

3

基本的に、更新できないという問題を引き起こしたのは誤った構文でした。

エラー:

curl -XPOST 'localhost:9200/prototype_2013.01.02/chow-clfg/Nx4JcvyxTPujkyy0Jq5BNw/_update'  \
    -d '{"script":"ctx._source.chow-clfg.count+=num","params":{"num":1}}'

正しい構文:

curl -XPOST 'localhost:9200/prototype_2013.01.02/chow-clfg/Nx4JcvyxTPujkyy0Jq5BNw/_update?parent=chow-demo'
    -d '{"script":"ctx._source[\"chow-demo\"].count+=num","params":{"num":1}}'

親マッピングは、適切な構文の型名とともに含める必要があります。

ctx._source[\"chow-demo\"].count+=num
于 2013-01-03T06:30:21.957 に答える