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

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

当我更新时,我这样做:

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

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

当我删除时,我这样做:

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

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

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

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

回答:

对于删除和更新,如果要按ID删除或更新,可以使用批量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允许根据查询从一个或多个索引以及一种或多种类型中删除文档。可以使用简单查询字符串作为参数来提供查询,也可以使用在请求正文中定义的查询DSL来提供查询。

http://www.elasticsearch.org/guide/zh-

CN/elasticsearch/reference/current/docs-delete-by-

query.html

以上是 如何使用Elasticsearch处理多个更新/删除? 的全部内容, 来源链接: utcz.com/qa/420795.html

回到顶部