使用percolate在elasticsearch-ruby中进行批量索引

时间:2015-06-30 17:20:32

标签: elasticsearch elasticsearch-ruby

根据this issue,elasticsearch支持将percolate与索引(单个文档)或批量(多个文档)一起使用。没有关于批量的例子,所以我在5年前添加了这个功能的问题标题。

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

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

感谢。

更新

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

看起来NEST library可以做到这一点(请参阅页面底部),如果我关心在.Net中重写我的项目。

2 个答案:

答案 0 :(得分:2)

除了a simple _bulk operation指定_index作为索引而_type指定.percolator时,不应该使用Ruby中的任何特殊方法:

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请求,mpercolate最初是percolate in bulk feature request创建的,最终被称为multi percolate api。我发现elasticsearch-ruby有support

?percolate=*的{​​{1}}功能似乎不在list of arguments for _bulk中,事实上,为此打开了一个问题:github.com/elastic/elasticsearch-ruby/问题/ 176。

LATER EDIT :我再次看了一遍,在the percolator redesign github问题之后,我更倾向于认为此功能已在ES 1.0.0中完全删除。我没有看到有关此内容被删除的具体声明,但重新设计之后的source code related to bulk indexing with percolator option已被删除。此外,文档并未在任何地方指定此选项。通常,当这种情况发生时不是疏忽,但功能根本不存在。仍然与文档有关 - 不要忘记你在网上找到的关于这个的任何资源至少有两年的历史,我会在假设它们仍然有效之前给它们带来一些盐。

如果您使用bulk或Sense在Elasticsearch(没有红宝石,巢或任何客户端)中进行测试,我不会感到惊讶,并且看到它无法正常工作。我刚刚在1.6中对此进行了测试,并且我没有看到它的功能。

答案 1 :(得分:0)

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