问题标签 [update-by-query]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1160 浏览

elasticsearch - version_conflict_engine_exception 与 _update_by_query

我在 flink 中通过查询 API 使用 ElasticSearch 更新,flink 并行度为 1。但是我得到了 version_conflict_engine_exception,这是我在 flink RichSinkFunction 中的代码,如下所示:

我可以肯定的是,只有这个应用程序访问 Elasticsearch,flink 并行度是 1,就像在单线程调用查询 API 更新中一样?为什么我得到了 version_conflict_engine_exception?以及如何只做一次?

0 投票
0 回答
281 浏览

elasticsearch - Elasticsearch:UpdateByQuery API 响应返回错误状态

我在尝试更新弹性搜索中不存在的文档时遇到了 UpdateByQuery API 的问题

问题描述

  1. 我们为每一天创建一个索引,例如 test_index-2020.03.11、test_index-2020.03.12 ……我们维护 8 天(今天和上周的 7 天)索引。

  2. 当数据到达时(从 Kafka 主题中逐一或批量读取),如果数据已经存在给定 ID,我们需要更新(可能存在于 8 天索引中的任何一个中),如果不存在则保存(到当前日指数)。

解决方案,我目前正在尝试数据一一到达:

  • 使用带有内联脚本的 UpdateByQuery 来更新文档

  • 如果 BulkByScrollResponse 返回更新计数 0,则保存文档

问题:

即使 doc 仍然不存在,我也可以看到 BulkByScrollResponse 将更新的字段返回为非零(1、2、3、4 ...),如下所示

BulkIndexByScrollResponse[sliceId=null,updated=1,created=0,deleted=0,batches=1,versionConflicts=0,noops=0,retries=0,throttledUntil=0s]

由于这无法触发文档保存请求。

如果需要通过单个请求使用其各自的内容更新大量文档(具有一组不同的文档 ID),如何处理?我可以使用 UpdateByQuery 实现吗?

注意:考虑到每小时要处理的数据量,我们需要避免多次命中 Elasticsearch。

文档 ID 的格式为 str1:str2:Used:Sat Mar 14 23:34:39 IST 2020

但是即使文档不存在,我仍然可以看到更新的计数为非零

关于我正在尝试的方法添加更多几点:-在我的情况下,每个请求总是只有一个文档必须更新,因为我正在尝试更新与给定 ID 匹配的文档 -我们已将分片和副本配置为"number_of_shards": 10, "number_of_replicas": 1 - 我们采用这种方法,因为我们不知道实际文档驻留在哪个索引中

如果最多有一个文档匹配,则响应的更新字段不应超过 1

以下是我作为响应的一部分得到的几个输出: BulkIndexByScrollResponse[sliceId=null,updated=9,created=0,deleted=0,batches=1,versionConflicts=1,noops=0,retries=0,throttledUntil= 0s] BulkIndexByScrollResponse[sliceId=null,updated=10,created=0,deleted=0,batches=1,versionConflicts=0,noops=0,retries=0,throttledUntil=0s]

0 投票
0 回答
420 浏览

elasticsearch - 有没有办法在不改变未受影响字段顺序的情况下使用 Painless 脚本更新文档?

我正在使用 Elasticsearch 的Update by Query API使用这样的Painless 脚本更新一些文档(实际query情况更复杂):

这可行,除了在重新索引时,其他字段会重新排序,包括一些使用JSON.NET 的类型处理自动(反)序列化的类。这意味着更新前具有以下来源的文档:

最终成为

JSON.NET 无法反序列化。有没有办法告诉脚本(或通过查询 API 更新)不要更改其他字段的顺序?

万一这很重要,我在 macOS 上使用 Elasticsearch OSS 版本 7.6.1。我还没有检查 Ingest 管道是否可以在这里工作,因为我不熟悉它们。


(事实证明,我可以通过将MetadataPropertyHandling属性设置为 来使反序列化更加灵活,如此ReadAhead所述。这可行,但如前所述,它可能会损害性能,并且可能存在字段顺序很重要的其他情况。从技术上讲,它不应该;JSON不是 XML,但总有一些边缘情况确实很重要。)

0 投票
1 回答
76 浏览

python - 将python代码内列表中的doc计数添加到elasticsearch中的字段

我需要更新 Elasticsearch 中文档的字段,并将该文档的计数添加到 python 代码内的列表中。该weight字段包含数据集中文档的计数。数据集需要不时更新。因此每个文档的计数也必须更新。hashed_ids是新一批数据中的文档 ID 列表。匹配的weightid 必须增加 中该 id 的计数hashed_ids。我尝试了下面的代码,但它不起作用。

例如,假设索引中已经存在带有id=d1b145716ce1b04ea53d1ede9875e05a和=5 的文档。weight并且字符串d1b145716ce1b04ea53d1ede9875e05a在中重复了三遍,hashed_ids因此update_with_query上面显示的查询将匹配数据库中的文档。我需要将 3 添加到 5 并有 8 作为最终weight

0 投票
0 回答
36 浏览

elasticsearch - Elasticsearch - 根据尚未索引的新记录中的值更新已索引的多个记录的字段

我需要根据尚未索引的新记录中的值更新已索引的几条记录的字段。有没有办法实现它?

下表描述了我对当前文档的索引。黄线将是一个新的文档到达。

规则:当收到最新的条目(新的“未索引条目”)且状态=关闭时,必须将组 1 的所有相应条目(来自现有索引)设置为颜色=红色

包含样本数据的表格

您能否让我知道如何实施的任何示例?

谢谢

马塞洛

0 投票
1 回答
88 浏览

node.js - 更新弹性搜索客户端中的数字和浮点字段

我对弹性搜索客户端有点陌生。我没有对任何字段进行任何类型的预定义映射,因为将来我可能会在文档中添加一些新字段。我的数据如下所示:-

我想通过使用更新 3 个字段updateByQuery。我正在尝试以下方法。

由于updatedAtand ,我收到编译错误segmentId,当我作为字符串传递时,它可以工作,例如:-

0 投票
1 回答
342 浏览

elasticsearch - _update_by_query + 脚本不能正常工作,错误:试图创建太多滚动上下文

弹性搜索版本:7.6.2

虚拟机:13.0.2

操作系统版本:centeros7

这是我的代码

此代码没有正确返回结果,错误信息是

我确定当前滚动为 0

当我用 _UPDATE 替换 _UPDATE_BY_QUERY 时,它会正常更新

ES从上周五就没有改过,突然报错

没有对 ES 服务器进行任何配置更改

0 投票
1 回答
160 浏览

elasticsearch - 使用 json 数据弹性更新字段

发布汽车/_update_by_query

脚本成功运行,没有出现错误,输出如下,但没有更新。

谢谢

0 投票
1 回答
812 浏览

elasticsearch - 将 updateByQuery 与 ElasticSearch 一起使用时无法解析符号 [字符串]

我有以下设置:

映射:

这是我发布条目时的结果:

在此处输入图像描述

这是我查询条目时的结果:

我尝试使用以下 curl 更新条目的姓氏:

这是我得到的错误:

如果我输入一个整数而不是一个字符串,它会更新它,否则我会不断收到该错误。

非常感谢你的帮助。

0 投票
1 回答
93 浏览

java - 在 Java 客户端中使用 UpdateByQueryRequest

我正在尝试UpdateByQueryRequest在java中使用。问题是,我在eclipse. 我正在使用java RestHighLevelClient. 这是一个例子

我收到了 2 条建议。第一个没有 SearchRequest对象,第二个 SearchRequest对象

我无法setQuery像在 ES 中的其他地方一样使用。另一方面setScript工作

是否有其他语法可以做到这一点?