1

一括 API を使用して既存のインデックスを一括更新しようとしています。そのため、更新が必要な既存のレコードと、存在しないためインデックスを作成する必要がある新しいレコードがあります。次のコードを使用しました

BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
bulkRequestBuilder.add(client.prepareUpdate(InvokeMain.indexName, type, docId).setUpsert(finalMap));

ただし、これにより、次の例外が発生します

org.elasticsearch.action.ActionRequestValidationException: Validation      
Failed: script or doc is missing;

新しいレコード/新しい docIds が失敗した場所だと推測しています。upsert (存在する場合は更新、存在しない場合は挿入) をまとめて達成する方法はありますか?

4

2 に答える 2

0

( upsertie setUpsert)を使用する場合、公式ドキュメントに記載されているfinalMapように少し異なる必要があります。docscriptscriptdoc

...
Map<String, Object> docMap = ... your current map containing the fields...;
Map<String, Object> finalMap = new HashMap<String, Object>();
finalMap.put("doc", docMap);
...
于 2015-09-01T13:33:58.967 に答える