0
私は、次のドキュメントがあります:私は何をしたいか弾性検索部分更新
{
{
"_index": "demo_processinglog",
"_type": "status",
"_id": "1498130124024a",
"_score": 1,
"_source": {
"startTime": 1411230604024,
"clientName": "fastlog",
"projectName": "demo",
"sourcePath": "/nfs/clients/client1/projects/project1/",
"sourceFiles": [
{
"sourceFile": "/nfs/clients/client1/projects/project1/Readme.txt",
"fileSize": 3563
"status": "123"
},
{
"sourceFile": "/nfs/clients/client1/projects/project1/XML/data.xml",
"fileSize": 51893940,
"status": 234
},
{
"sourceFile": "/nfs/clients/client1/projects/project1/XML/data2.xml",
"fileSize": 1665,
"status": 345
},
{
"sourceFile": "/nfs/clients/client1/projects/project1/XML/data3.xml",
"fileSize": 5799680,
"status": 456
}
]
}
}
を特定のソースファイルの状況フィールドを更新しています。
"sourceFile": "/ nfs/clients/client1/projects/project1 /"エンドポイントを使用してアップデートを実行しようとしましたが、 Readme.txt "
" sourceFiles "配列内にあるすべてのものを削除します。特定の「sourceFile」のステータスフィールドのみを更新し、他のデータはそのまま残すことができますか?私はまた、 "doc_as_upsert"オプションを使用して更新を試みましたが、それでも他のものはすべて削除されます。
UPDATE
私はちょうど走る次のスクリプトは、しかし、何も更新されていない結ば:
{
"script": "for (int i = 0; i < ctx._source.sourceFiles.size(); i ++) {if (ctx._source.sourceFiles[ i ].fileName == params.sourceFile) {ctx._source.sourceFiles[ i ].status = params.status;} }",
"lang": "painless",
"params": {
"status": "completed",
"sourceFile": "/nfs/clients/client1/projects/project1/Readme.txt"
}
}
ありがとう!