1
我正在嘗試在我的ES系統上執行Upsert。當我運行下面這段代碼:彈性搜索,Java API:驗證失敗:1:腳本或文檔丟失;
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(m);
String id = m.getId();
IndexRequest indexRequest = new IndexRequest("mediaitems", "mediaitem", m.getId())
.source(json);
UpdateRequest updateRequest =
new UpdateRequest("mediaitems", "mediaitem", m.getId()).upsert(indexRequest);
client.update(updateRequest).get(); //Throws error here
它拋出和錯誤的
"java.util.concurrent.ExecutionException:
org.elasticsearch.action.ActionRequestValidationException: Validation
Failed: 1: script or doc is missing;"
當我註釋掉UpdateRequest代碼,並與一個普通的插去,它正確的行爲。
這是怎麼回事?我這樣做是因爲我想避免讀取ES上存在的所有可能爲的文檔,然後進行插入或更新循環。
對於這個問題可能會有什麼幫助,我們將不勝感激。
我還沒有使用Java API與ES,但根據錯誤,它可能是你沒有設置:'updateRequest.doc()' – alfasin
看起來像索引或類型可能是錯誤的 – Nandakumar
什麼是真正的用途你想實施的情況? – Val