2

根据这个问题,elasticsearch 支持使用带有索引(单个文档)或批量(多个文档)的渗透。没有给出批量的例子,所以我按照问题的标题来说明这个功能是 5 年前添加的。

不幸的是,我在 ruby​​ API、elasticsearch-ruby 中找不到有关此功能的任何信息。

有谁知道它是否可用,或者可能有代码示例?

谢谢。

更新:

此页面描述了如何在索引单个文档时进行渗透,并声称可以批量处理。现在,如何在 elasticsearch-ruby 中做到这一点?

如果我想在 .Net 中重写我的项目,看起来NEST 库可以做到这一点(见页面底部)。

4

2 回答 2

2

Ruby 中不应该有任何特殊的方法,除了一个简单的_bulk操作将 指定为您的_index索引和:_type.percolator

POST /_bulk
{"index":{"_index":"some_index","_type":".percolator","_id":"1"}}
{"query":{"match":{"whatever_field":"some value 1"}}}
{"index":{"_index":"some_index","_type":".percolator","_id":"2"}}
{"query":{"match":{"whatever_field":"some value 2"}}}
{"index":{"_index":"some_index","_type":".percolator","_id":"3"}}
{"query":{"match":{"whatever_field":"some value 3"}}}

为了发送多个 percolate 请求,存在percolate,它最初是由于 percolate in bulk 功能请求而创建的,最终被称为multi percolate api。而且我看到 elasticsearch-ruby支持它。

它的?percolate=*功能bulk似乎不在参数列表中_bulk,实际上,为此打开了一个问题:github.com/elastic/elasticsearch-ruby/issues/176。

稍后编辑:我再次查看了这个,我更倾向于相信这个特性已经在 ES 1.0.0 中完全删除,在 percolator redesign github issue 之后。我没有看到关于此被删除的具体声明,但与重新设计后的带有选项的批量索引相关的源代码percolator已被删除。此外,文档没有在任何地方指定此选项。通常,发生这种情况不是疏忽,而是功能根本不存在。仍然与文档相关 - 不要忘记您在网上找到的任何关于此的资源至少有两年的历史,我会在假设它们仍然有效之前对它们持保留态度。

curl如果您使用或 Sense 在 Elasticsearch(没有 ruby​​、nest 或任何客户端)中测试它并发现它不起作用,我不会感到惊讶。我刚刚在 1.6 中对此进行了测试,但没有看到该功能。

于 2015-07-02T21:41:40.573 回答
0

最新的主文档(当前未发布的 Elasticsearch 6.x)有一个关于渗透多个文档的部分。这是计划在 6.X 中发布的新功能,但不在 6.0 候选版本中。

于 2017-10-31T08:08:47.590 回答