使用JEST在ElasticSearch中进行部分更新

时间:2017-06-01 03:20:01

标签: elasticsearch jest

我正在尝试使用JEST对ElasticSearch实施CRUD操作,而且我发现了一些文章,我发现“更新”的方法是“索引“另一个具有相同” _id “的文档,但我将以这种方式替换整个文档。

我想知道JEST能否做到“部分更新”?

修改:

我发现 io.searchbox.core 包中的更新类可能有所帮助,但在我尝试之后:< / p>

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
}

任何设备都非常感谢,谢谢!

1 个答案:

答案 0 :(得分:4)

你几乎就在那里,updateCameraString需要是一个脚本或一个部分文档,因此需要将其更改为以下内容并且它将起作用:

{"doc": { "Name":"test Added into Es, update again.","CreatedAt":"","ModifiedAt":"","UniqueId":"","Note":""}}