使用 JEST 在 ElasticSearch 中进行部分更新
Partial update in ElasticSearch with JEST
我正在尝试使用 JEST 对 ElasticSearch 执行 CRUD 操作,并且我已经搜索了一些文章,我发现执行“Update”的方法是“Index” 另一个具有相同“_id”的文档,但我将以这种方式替换整个文档。
我想知道 JEST 是否能够执行“部分更新”?
编辑:
我发现 Update class 在 io.searchbox.core 包可能会有帮助,但在我尝试这个之后:
Update update = new Update.Builder(updateCameraString).index(this._IndexName).type(this._TypeName).id(id).build();
JestResult updateResult = this._JestClient.execute(update);
updateCameraString
的内容是
{"Name":"test Added into Es, update again.","CreatedAt":"","ModifiedAt":"","UniqueId":"","Note":""}
似乎一切正常,但我会收到以下回复:
{
"error": {
"root_cause": [
{
"type": "action_request_validation_exception",
"reason": "Validation Failed: 1: script or doc is missing;"
}
],
"type": "action_request_validation_exception",
"reason": "Validation Failed: 1: script or doc is missing;"
},
"status": 400
}
任何设备都非常感谢,谢谢!
大功告成,updateCameraString
需要是脚本或部分文档,因此需要更改为以下内容才能正常工作:
{"doc": { "Name":"test Added into Es, update again.","CreatedAt":"","ModifiedAt":"","UniqueId":"","Note":""}}
我正在尝试使用 JEST 对 ElasticSearch 执行 CRUD 操作,并且我已经搜索了一些文章,我发现执行“Update”的方法是“Index” 另一个具有相同“_id”的文档,但我将以这种方式替换整个文档。
我想知道 JEST 是否能够执行“部分更新”?
编辑:
我发现 Update class 在 io.searchbox.core 包可能会有帮助,但在我尝试这个之后:
Update update = new Update.Builder(updateCameraString).index(this._IndexName).type(this._TypeName).id(id).build();
JestResult updateResult = this._JestClient.execute(update);
updateCameraString
的内容是
{"Name":"test Added into Es, update again.","CreatedAt":"","ModifiedAt":"","UniqueId":"","Note":""}
似乎一切正常,但我会收到以下回复:
{
"error": {
"root_cause": [
{
"type": "action_request_validation_exception",
"reason": "Validation Failed: 1: script or doc is missing;"
}
],
"type": "action_request_validation_exception",
"reason": "Validation Failed: 1: script or doc is missing;"
},
"status": 400
}
任何设备都非常感谢,谢谢!
大功告成,updateCameraString
需要是脚本或部分文档,因此需要更改为以下内容才能正常工作:
{"doc": { "Name":"test Added into Es, update again.","CreatedAt":"","ModifiedAt":"","UniqueId":"","Note":""}}