问题标签 [elasticsearch-bulk-api]

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 回答
11209 浏览

python - 如何从python对elasticsearch进行批量索引

我有近 10K 的 json 文档,我想通过使用来自 python 的 elasticsearch bulk api 将所有这些文档推送到 elasticsearch。我浏览了一些文档,但没有得到任何解决方案。

我都试过了,但没有结果,我收到了这个错误

请帮我

0 投票
0 回答
418 浏览

elasticsearch - 如何在 Elasticsearch 的查询中获取“相关文档”?

我在弹性搜索中有一个问题,我无法解决:

我在索引中有两种不同的类型,一种称为“关键字”,另一种称为“产品”。关键字具有字符串属性“keyword_content”,产品具有文本属性“content”。

我需要查询所有关键字及其前 N 个相关产品。相关关系由标准查询定义

我知道我在 ElasticSearch 中有父子功能,但是当我插入关键字时,我事先并不知道相关产品(唯一的方法是在插入关键字之前,对每个关键字使用搜索查询以了解哪些产品是相关的,并用正确的产品索引关键字,但这意味着在插入之前查询每个关键字,这是昂贵的)。

让我们假设我在 ElasticSearch 中已经有了两个 UNRELATED 类型。我如何查询所有关键字及其关联的 N 个相关产品。我正在寻找一种“动态字段”,它是使用每个文档的“keyword_content”属性作为查询字符串对不同类型进行查询的结果。

我想要类似的东西:

关键字文档示例:

产品文件示例

我想要这样的东西(我正在简化elasticsearch格式以更好地解释我的用例)(不是说这些类型不相关,或者我可以将它们关联起来,但我无法指定哪些keyowrds与哪个产品相关,我希望elasticSearch告诉我):

0 投票
1 回答
360 浏览

python-3.x - Elasticsearch-py 批量助手相当于 curl 文件

我希望使用 elasticsearch python 客户端(并且不使用subprocess)复制以下命令:

我试图在没有任何运气的情况下使用批量助手:

这会导致type is missing错误。

该文件在使用时处理得很好curl,看起来有点像这样:

请注意,我宁愿不更改文件的内容,因为我有大约 21000 个具有相同格式的文件。

0 投票
2 回答
1501 浏览

json - 如何批量更改 Elastic Search 的 JSON 格式

我有以下格式,并希望使用 elasticsearch 进行批量预处理。

我正在尝试在我的每一行之前添加索引、类型行。

在阅读之前的帖子时,我使用的是Kevin Marsh 的帖子,如下所示:

我没有使用管道,因为我试图找出之前的错误。我收到错误 jq:no such file or directory。然后我用jq --version and get jq-1.5-1-a5b5cbe.

任何帮助深表感谢。

0 投票
1 回答
1755 浏览

elasticsearch - 更新数百万个文档的嵌套字段

我使用脚本批量更新来更新嵌套字段,但这非常慢:

你知道另一种更快的方法吗?

似乎可以存储脚本以便不为每次更新重复它,但我找不到保持“动态”参数的方法。

0 投票
1 回答
38 浏览

elasticsearch - 如何在弹性搜索中将元素插入到已经存在的列表中

假设我有如下存储的文档。

我需要使用批量 API 向文档中的 valueList 添加更多元素,其中包含文档 ID 列表。结果应该看起来像

我能做些什么来实现这一目标?我尝试使用脚本,但它只更新一个文档。

抱歉,我对弹性搜索真的很陌生。在这个问题上我什至可能是愚蠢的。请原谅并让我清楚这个问题。

0 投票
1 回答
2135 浏览

elasticsearch - 如何处理批量请求的错误

我正在使用 Elasticsearch 批量 API 一次将大量文档发送到索引和删除。如果一个文档有错误,其他文档将被成功索引或删除。这会导致弹性存储中的数据状态错误,因为在我的案例中,文档是相互关联的。我的意思是,如果一个文档的字段具有某些值,那么还有其他文档也应该对该字段具有相同的值。我不确定如何处理来自批量请求的此类错误。是否可以以任何方式回滚请求?我阅读了类似的问题,但无法获得处理此类案件的解决方案。或者不是回滚,有没有什么办法只有在没有错误的情况下才发送数据?或类似请求的空运行?

0 投票
1 回答
1232 浏览

elasticsearch - 批量 API 的发布请求给出的状态码为 406,如何解决?

我正在使用 Elastic search 6.1 版本 我的数据附加正确,我在请求末尾添加了 '\n'。

我的代码如下:

我正在使用 python 连接到弹性搜索。

我从这个链接 Bulk index document from JSON file into ElasticSearch得到了答案

我必须将标头作为 application/x-ndjson 传递给请求。

0 投票
0 回答
1121 浏览

elasticsearch - 提高 Elasticsearch 的批量索引请求性能

tl;dr:目前,我使用 Elasticsearch 5.6 作为我的 go 应用程序的数据存储。我有一百万个文档分布在 12 个索引中。每个索引有 5 个分片和 2 个副本。首先,我从 Elasticsearch 加载这些文档,然后对其进行处理,然后以 10000 文档/批次的速率批量索引它们。我运行 3 个工作人员,每个工作人员一次有一个异步 goroutine。这些 goroutine 是每个索引的,因此它们会为每个索引发送批量索引请求。这意味着一个工作人员在一个 goroutine 中发送大约 100,000 个文档。文档分批发送,每个 goroutine 发送近 10 批。整个过程需要一分钟多的时间。大多数时间都花在批量索引上。

我当前的 Elasticsearch 使用 6GB RAM 和 3.5GB 堆大小运行。我尝试通过将索引缓冲区大小增加到 20% 来调整 Elasticsearch 以提高索引速度。700MB。我禁用了不需要索引的字段的索引。我优化了映射中的数字字段类型。我禁用了 _all 字段。我将索引编解码器(压缩方法)更改为 best_compression。做了这一切之后,并没有太大的改善。

因此,我想获得提高批量索引性能的想法,以便在一分钟内完成所有过程。如果我向 Elasticsearch 添加更多 RAM 和堆大小,它会得到改善吗?还有其他设置/调整吗?

目前,我处于开发阶段,因此我也可以切换到其他数据存储系统,以适应我快速读取、写入和分析数据的要求。这样的想法也受到欢迎。

0 投票
0 回答
617 浏览

node.js - client.bulk() Node.js 的 ElasticSearch 非法参数异常

我尝试将数据发送到 ES,并且我正在使用 POST 请求逐行发送数据,并且它适用于小文件。

当我更改为使用 client.bulk() 时,我不断收到以下错误消息:

我注意到,在我使用 bulk 之后,target_status_code 字段的类型已经从 string 变为 number,并且许多 keyord 字段都消失了。

我只修改了发送请求功能,所以我不明白为什么它在使用批量时不起作用。