私はドキュメントを作成または置き換えようとしていますが、APIドキュメントではこれを行う方法が明確ではありません。Elasticsearchでドキュメントを作成または置き換える方法は?
upsert例は1
のcounter
値で作成された文書を示しています
client.update({
index: 'myindex',
type: 'mytype',
id: '777',
body: {
script: 'ctx._source.counter += 1',
upsert: {
counter: 1
}
}
}, function(error, response) {
// ...
})
私はインクリメントスクリプトを必要としないので、私はちょうど自分自身でアップサートを送信しようが、私は得ます400 Validation Failed: 1: script or doc is missing
:
client.update({
index: "testindex",
type: "testType",
id: 1234,
body: {
upsert: {
itworks: true,
ok: "oh yeah"
}
}
})
さて、愚かな何かを試してみて、二度のドキュメントが含まれてみましょう。
client.update({
index: "testindex",
type: "testType",
id: 1234,
body: {
upsert: {
itworks: true,
ok: "oh yeah"
},
doc: {
itworks: true,
ok: "oh yeah"
}
}
})
実際に201初出、働いていた:かつてそうでない場合は、新規ドキュメントを作成するために使用される1、および一度upsert
の下では、あった場合、おそらく既存のドキュメントに代わるdoc
、下。 OK 200私は別のものでドキュメントを交換するためにそれを繰り返す:
client.update({
index: "testindex",
type: "testType",
id: 1234,
body: {
upsert: {
whatever: "man"
},
doc: {
whatever: "man"
}
}
})
しかし、私はDOC(client.get({index: "testindex", type: "testType", id: 1234})
)をチェックしたときに、私が代わりに既存のドキュメントを置き換えるので、新しいドキュメントが、それと合併されたことがわかります。
標準のNodeクライアントとElasticsearchのドキュメントを置き換えるだけですか? HTTP APIはそれをso simpleのように見せていますが、成功していないノードクライアントではその一連の並べ替えを試しました。置き換えコマンドはありませんか?削除してから作成する必要がありますか?
同じIDを持つ 'create'呼び出しは、409 Conflict:ドキュメントが存在するか、または既存のバージョンと一致しないバージョンを含む場合、バージョンの競合を返します。 –
'create'の代わりに' index'を試してください –
それだけです!私はその言葉を推測することはなかった。私はインデックスがRDBMSでどのように使われているかのようにインデックスを考えていました。 –