有效地更新大量的数组类型字段

时间:2015-11-24 18:44:13

标签: elasticsearch

我正在寻找一种有效的方法来更新索引中的大量条目。假设我的ElasticSearch索引包含带标签的文档。标签表示为字符串数组。因此,一个文档可能包含标记['foo', 'bar'],而其他一些文档可能包含标记['bar', 'baz']

通常我需要在许多文档中添加某个标记(我知道它们的ID)并从所有其他文档中删除此标记。索引中有大约50万个文档并且还在增长,我需要更新数十个,甚至数十万个文档。

该操作不需要是原子的。并发写入没有问题,我可以肯定在我更新时该索引上没有其他写操作。

我的目标是尽快完成此更新。

我们想象一下,我需要将标记'foo'设置为123,456和555文档。

我应该从索引中的所有文档中删除标记'foo',然后将其添加到123,456和555吗?或者我应该首先获取需要删除该标记的文档列表,然后仅从这些文档中删除标记并仅添加到需要它的文档中?

还有其他方法可以解决这个问题吗?

更新: 到目前为止,我发现最大的瓶颈实际上是更新条目。显然,ES通过重新索引整个文档来进行更新,这需要很长时间,在性能方面,其他一切(选择要更新的文档)并不重要。

0 个答案:

没有答案