1 回答

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
upsert
通過(guò)腳本的正確方法是不使用該部分,doc
而僅使用該script
部分。upsert
如果您想在同一命令中更新插入和更新,您還需要該部分。事情是這樣的:
actions = [{
? ? "_op_type":"update",
? ? "_index": "test-data",
? ? "_type": "test-test-data",
? ? "_id": test_row ['testId'],
? ? "upsert": {
? ? ? ?"DataIds": test_row ['DataIds']
? ? },
? ? "script": {
? ? ? ? "source": "ctx._source.DataIds.add(params.DataIds)",
? ? ? ? "lang": "painless",
? ? ? ? "params": {
? ? ? ? ? ?"DataIds":test_row ['DataIds']
? ? ? ? }
? ? }
} for test_row in temp_list
]
另一種方法是使用scripted_upsert
actions = [{
? ? "_op_type":"update",
? ? "_index": "test-data",
? ? "_type": "test-test-data",
? ? "_id": test_row ['testId'],
? ? "upsert": {},
? ? "scripted_upsert": true,
? ? "script": {
? ? ? ? "source": "if (ctx._source.DataIds == null) { ctx._source.DataIds = []; } ctx._source.DataIds.add(params.DataIds)",
? ? ? ? "lang": "painless",
? ? ? ? "params": {
? ? ? ? ? ?"DataIds":test_row ['DataIds']
? ? ? ? }
? ? }
} for test_row in temp_list
]
添加回答
舉報(bào)