gpt4 book ai didi

indexing - 如何使用 java API 在现有的 elasticsearch 索引中添加更多文档?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:42 27 4
gpt4 key购买 nike

我使用 java Index API 创建了一个索引并添加了一个文档。

client.prepareIndex("details", "Key", i).setSource(putJsonDocumentString(Key, Value)).execute().actionGet();

这很好用。索引已创建,文档已正确编入索引。现在,我需要在同一索引中添加另一个文档“Keys2”。所以,我这样做了,

client.prepareUpdate("details", "Keys2", i).setScriptParams(putJsonDocumentString(Key, Value)).execute().actionGet();

但是,它没有被添加到上述索引中。我不想使用批量 API(我一直收到 ClusterBlockedException,但从未解决,而且我也没有太多数据)我找不到任何示例程序做同样的事情。

异常(exception)情况是:

ActionRequestValidationException: Validation Failed: 1: script or doc is missing

我该如何解决?

方法 putJsonDocumentString() 返回一个 Map<string, Object>哪个应该与 setScriptParams() 一起使用,对吗?

最佳答案

如果我理解得很好,您想在同一索引中添加另一个文档。

在这种情况下,这非常简单:您可以使用与第一个文档相同的 API,但使用相关参数:

client.prepareIndex("details", <type_name>, <id>).setSource(putJsonDocumentString(Key, Value)).execute().actionGet();

第二个文件的真实值(value)的占位符。根据您的描述,Key2 是 id,而不是文档的类型。

如果您对 indextypedocument 概念感到困惑,请查看 basic description from the documentation .

prepareIndex API 将文档添加(或更新)到索引中。在您的情况下,如果您之前没有创建索引和类型,ElasticSearch 将使用默认参数即时创建它。

prepareUpdate API 用于更新现有文档,而不是将新文档添加到现有索引。来自 documentation :

The update API allows to update a document based on a script provided.

这解释了您的错误消息。

关于indexing - 如何使用 java API 在现有的 elasticsearch 索引中添加更多文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31180988/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com