2013-04-11 61 views
8

我是ElasticSearch的新手,所以这可能是一件相当平凡的事情,但我没有想出任何更好的东西,抓取所有东西,用脚本处理并逐个更新寄存器。更新elasticsearch中的所有记录中的字段

我想要的东西是一个简单的SQL更新:

UPDATE RECORD SET SOMEFIELD = SOMEXPRESSION 

我的意图是,以取代一些数据更有意义实际的假数据(这样的表达基本上是随机地从池中选择有效值)。

回答

14

有一个关于使可以更新由查询文件夫妇openissues

技术挑战是lucene(elasticsearch使用的文本搜索引擎库)段是只读的。你永远不能修改现有的文件。什么,你需要做的是删除旧版本的文件(其中的方式为已删除,直到段合并发生将只被标记)和索引的新的。这就是现有的update api所做的。因此,通过查询进行更新可能需要很长时间并导致问题,这就是为什么它尚未发布。对于这种情况,允许中断正在运行的查询的机制也不错。

但是有update by query plugin正是公开该功能。使用前请注意潜在的风险。

+1

经过一些研究,我得出的结论...有时我无法理解NoSQL周围的所有炒作:( – fortran 2013-04-11 13:52:28

+0

这里更多关于lucene比NoSQL在这里。Lucene不更新,只是重新索引...因此,你更好地重新索引你自己:)我可以要求接受答案,如果它有用吗? – javanna 2013-04-17 18:40:02

相关问题