ElasticSearch可以删除所有文件并在单个查询中插入新文档吗?

时间:2013-12-10 00:37:09

标签: search lucene elasticsearch

我想换掉特定索引类型的所有文档。我正在考虑这个像数据库事务,我在哪里:

  1. 删除
  2. 类型内的所有文件
  3. 创建新文档
  4. 提交
  5. 看来这可以通过ElasticSearch的批量API实现,但是有更直接的方法吗?

1 个答案:

答案 0 :(得分:2)

基于以下声明,来自elasticsearch Delete by Query API Documentation

  

注意,按查询删除会绕过版本控制支持。此外,不建议删除“索引中的大块数据”,很多时候,最好简单地重新索引到新索引中。

您可能需要重新考虑删除整个类型并从同一索引重新创建它们。正如本声明所暗示的那样,最好简单地重新编制索引。事实上,我有一个场景,我们有一个制造商产品索引,当制造商发送更新的产品列表时,我们将新数据加载到我们的持久存储中,然后完全重建整个索引。我已经实现了Index Aliases的使用,以允许屏蔽正在使用的实际索引。当产品发生更改时,将启动进程以在后台重建新索引(当前大约需要15分钟的过程),然后在数据加载完成后将别名切换到新索引并删除旧索引。所以这是完全无缝的,不会给我们的用户带来任何停机时间。