5

我有一个弹性搜索服务器,我正在使用 Jest 客户端通过 java 服务器访问它,我一直在寻找每次更新文档的多个字段的最佳方法。

到目前为止,我已经查看了文档,我发现有两种方法可以做到:

  1. 通过脚本进行部分更新:我认为它不适合多字段更新(因为我不知道修改后的字段)。
  2. 整个文档更新:通过重新索引整个文档。

我的问题是知道 Jest 仅通过脚本提供更新,我怎么能更新整个文档?

这是删除文档和索引更新版本的最佳方法吗?

4

1 回答 1

6

已经在您打开的 github 问题中回答了这个问题,但又一次:

您应该使用链接的第二种方式(整个文档更新)并且没有特殊的 API,它只是一个常规的索引请求。因此,您只需针对要更新的文档发送Index请求即可。id

例如,假设您已经在 Elasticsearch 中的 index people、 type 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()
    );
于 2015-05-14T09:17:35.477 回答