当前位置: 首页 > 面试题库 >

如何使用Elasticsearch处理多个更新/删除?

方夜洛
2023-03-14
问题内容

我需要更新或删除几个文档。

当我更新时,我这样做:

  1. 我首先搜索文档,为返回的结果设置更大的限制(比方说,大小:10000)。
  2. 对于每个返回的文档,我都会修改某些值。
  3. 我不喜欢对整个修改后的清单(批量索引)进行Elasticsearch。

该操作一直进行到点1不再返回结果为止。

当我删除时,我这样做:

  1. 我首先搜索文档,为返回结果设置更大的限制(例如,大小:10000)
  2. 我删除所有找到的发送到elasticsearch _id文档的文档(10000个请求)

重复此操作,直到点1不再返回结果。

这是进行更新的正确方法吗?

删除时,是否可以发送多个ID一次删除多个文档?


问题答案:

对于删除和更新,如果要按ID删除或更新,可以使用批量api:

大量API

批量API使在单个API调用中执行许多索引/删除操作成为可能。这样可以大大提高索引速度。

可能的操作是索引,创建,删除和更新。index和create期望在下一行提供源,并且具有与标准索引API的op_type参数相同的语义(即,如果已经存在具有相同索引和类型的文档,则create将失败,而index将添加或替换文档有必要的)。delete在下一行中不需要源,并且具有与标准delete
API相同的语义。更新期望在下一行指定部分doc,upsert和脚本及其选项。

http://www.elasticsearch.org/guide/zh-
CN/elasticsearch/reference/current/docs-
bulk.html

您也可以通过查询删除:

按查询删除API

通过查询删除API允许根据查询从一个或多个索引以及一种或多种类型中删除文档。可以使用简单查询字符串作为参数来提供查询,也可以使用在请求正文中定义的查询DSL来提供查询。

http://www.elasticsearch.org/guide/zh-
CN/elasticsearch/reference/current/docs-delete-by-
query.html



 类似资料:
  • 我在Elasticsearch中索引了一个文档,如下所示: 我尝试通过以下命令更新计数字段: 但是,我收到了以下错误: 我到底做了什么,却不见了?我在http://www.elasticsearch.org/guide/reference/api/update.html跟踪文件,但它不起作用。 此外,我还包括父字段: 但还是没有成功。有人能帮我解决这个错误吗?

  • 我使用硒与Appium和我的测试运行在Android和iOS真正的设备。一组测试运行在Android上,而iOS是空闲的。然后测试切换到iOS。两个设备同时连接。 下面是我使用testNG运行的套件的序列: 这里的问题是,当测试切换到android时,iOS设备显示os更新安装弹出窗口。我想在测试切换回iOS之前禁用弹出窗口。我可以从设置中删除更新

  • 问题内容: 有没有人有使用更新的示例?它已在此处进行了文档记录,但是文档尚不清楚,并且不包含有效的示例。我尝试了以下方法: 我得到 我想使用部分文档进行更新,但是update方法不使用任何名为“ doc”或“ document”的参数。 问题答案: 您快要准备好了,只需要将您的身体放在“ doc”字段中即可。使用elasticsearch-py进行部分更新的正确方法如下:

  • 我想使用Java API用一个特定的字段更新一些索引数据。我参考了这个文档https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-update.html,并创建了一个java程序。我的Java程序如下所示:

  • 问题内容: 我看到这对笨论坛 考虑以下代码 这显然是您在Codeigniter中这样做的方式 实际上这是行不通的。我看了一下生成的SQL,结果甚至没有提到联接。 有谁知道如何使用Codeigniter的Active Record数据库类对联接进行更新? 问题答案: 我发现的一种解决方案是完全删除联接并将联接条件移到“ where”函数中,此外,您还需要更改更新字符串以包括新表。

  • 问题内容: 我无法理解与以下情况相关的这种基本机制。 我有一个spring网络应用程序。现在,我将模型自动连接到控制器中。基于url匹配,它将调用相应的方法。我所有的方法都是单例。 现在,当两个用户同时打开应用程序时,spring可以并行运行它们并为他们提供结果。我不明白它怎么做。我的意思是因为bean是单例的,所以必须等到不使用bean或覆盖bean中的数据。但是弹簧工作正常。有人可以用一些类比