ノード環境でelasticsearchを使用しています。elasticsearch複数のフィールドを持つapi upsertが一致する
client.update({
index: 'loreal',
type: 'reviews',
id: reviewID,
body: {
script: {
inline: "ctx._source.comments.add(params.comment)",
lang: "painless",
params: {
comment: {
tuple: {
reviewee: data.reviewee,
reviewer: data.reviewer
},
nb: data.nb,
type: data.type
}
}
}
}
})
しかし、同じ「reviewee」、「投稿者」AND「論理」とのコメントがすでに私が存在する場合:私は、次のコードを使用して、コメントを追加
"_source": {
"repo_id": "ecom-test",
"pr_id": "1",
"pr_status": "approved",
"date_created": "2016-12-14T12:55:50.317Z",
"date_modified": "2016-12-14T12:55:50.317Z",
"comments": [
{
"tuple": {
"reviewee": "Max",
"reviewer": "Vic"
},
"nb": "1",
"type": "typo"
},
{
"tuple": {
"reviewee": "Antoine",
"reviewer": "Vic"
},
"nb": "2",
"type": "logic"
}
]
}
: は、これが私のデータモデルです"comments"配列に新しい項目を作成する代わりに "nb"属性を更新したいと考えています。
私は私が最初に検索を行うだろうと思ったが、私はこれらの3つの値を持つ配列「コメント」のいずれかの要素にマッチする検索を行うための方法を見つけることができません。私は本当にあなたたちはこれで私の手を与えることができることを望む
、それは私が= Sを探しています長い時間がかかりました。
ドキュメントの構造体を考えると、事前
おかげで多くのことを。残念ながら、それは私が探していたものではありませんでしたが、それは別の問題で私を助けました。私はついに前のものを更新するのではなく、新しい文書を作成することにしました。このように私は更新を複雑にする必要はなく、私は文書の履歴を保持することができます。 – Mexos