8

我是 ElasticSearch 的新手,所以这可能是一件非常微不足道的事情,但我还没有想出比获取所有内容、使用脚本处理和一个一个更新寄存器更好的方法。

我想做一个简单的 SQL 更新:

UPDATE RECORD SET SOMEFIELD = SOMEXPRESSION

我的意图是用一些更有意义的数据替换实际的虚假数据(因此表达式基本上是从有效值池中随机选择的)。

4

1 回答 1

15

关于通过查询更新文档有几个未解决的 问题。

技术挑战在于 lucene(Elasticsearch 在后台使用的文本搜索引擎库)段是只读的。您永远不能修改现有文档。您需要做的是删除文档的旧版本(顺便说一句,它只会被标记为已删除,直到发生段合并)并索引新版本。这就是现有的更新 api所做的。因此,查询更新可能需要很长时间并导致问题,这就是它尚未发布的原因。对于这种情况,允许中断正在运行的查询的机制也将是一个不错的选择。

但是查询插件的更新恰好暴露了该功能。使用前请注意潜在风险。

于 2013-04-11T12:21:48.743 回答