Elasticsearch Jest 更新整个文档
Elasticsearch Jest update a whole document
我有一个 elasticsearch 服务器,我正在使用 Jest 客户端通过 java 服务器访问它,我一直在寻找每次更新文档的多个字段的最佳方式。
到目前为止,我已经查看了文档,发现有两种方法可以做到这一点:
- Partial update via a script : 我觉得不适合多字段更新(因为不知道修改的字段)
- Whole document update: 通过重新索引整个文档。
我的问题是知道 Jest 仅通过脚本提供更新,我如何更新整个文档?
删除文档并索引更新版本是最好的方法吗?
已在您也打开的 github 问题中回答了此问题,但再次:
您应该使用第二种链接方式(整个文档更新)并且没有特殊的 API,它只是一个常规的索引请求。因此,您只需针对要更新的文档的 id
发送 Index
请求即可。
例如,假设您已经在 Elasticsearch 索引 people
中索引了以下文档,请键入 food
,id 9
:
{"user": "kramer", "fav_food": "jello"}
那么你会做:
String source = "{\"user\": \"kramer\", \"fav_food\": \"pizza\"}";
JestResult result = client.execute(
new Index.Builder(source)
.index("people")
.type("food")
.id(9)
.build()
);
我有一个 elasticsearch 服务器,我正在使用 Jest 客户端通过 java 服务器访问它,我一直在寻找每次更新文档的多个字段的最佳方式。
到目前为止,我已经查看了文档,发现有两种方法可以做到这一点:
- Partial update via a script : 我觉得不适合多字段更新(因为不知道修改的字段)
- Whole document update: 通过重新索引整个文档。
我的问题是知道 Jest 仅通过脚本提供更新,我如何更新整个文档?
删除文档并索引更新版本是最好的方法吗?
已在您也打开的 github 问题中回答了此问题,但再次:
您应该使用第二种链接方式(整个文档更新)并且没有特殊的 API,它只是一个常规的索引请求。因此,您只需针对要更新的文档的 id
发送 Index
请求即可。
例如,假设您已经在 Elasticsearch 索引 people
中索引了以下文档,请键入 food
,id 9
:
{"user": "kramer", "fav_food": "jello"}
那么你会做:
String source = "{\"user\": \"kramer\", \"fav_food\": \"pizza\"}";
JestResult result = client.execute(
new Index.Builder(source)
.index("people")
.type("food")
.id(9)
.build()
);