我可以将弹性搜索索引标记为不完整吗?我可以检索"完成"指数?

时间:2015-08-29 21:57:43

标签: lucene elasticsearch

我想填充一个索引,但只有在我完成之后才能搜索它。有弹性搜索的标准方法吗?我想我可以设置"index.blocks.read": true,但我想要一种能够提供弹性以获取可搜索索引列表的方法,而且我不知道如何使用该设置。关闭/打开索引也感觉有点麻烦。

我找到的解决方案是向每个索引添加一个文档来定义索引的状态。虽然查询索引列表有点烦人。特别是因为查询和分页2,000个索引状态文档的长列表是有问题的。滚动扫描是一种解决方案,因为它一次性为我提供了所有结果(因为每个分片最多只有一个索引状态文档)。虽然感觉就像我使用了错误的工具(即滚动扫描操作总是只进行一次滚动)。

我不想要一个引用所有索引的文档,因为我必须手动将垃圾收集与垃圾收集索引一起收集。但也许这是最好的权衡......

是否有我不了解的标准做法?

1 个答案:

答案 0 :(得分:1)

如何使用别名?您的应用程序可以查询别名(例如live),而不是直接查询索引。只要您的索引尚未就绪(即仍在填充),您就不会为其分配live别名,因此索引无法搜索。

基本上,这个过程是这样的:

  1. 使用其设置和映射创建索引
  2. 填充它
  3. 完成后,assign the live alias向其发送您的查询
  4. 稍后当您需要索引新数据时,您将创建另一个索引
  5. 您填充新索引
  6. 完成后,您switch the aliases,即从先前的可搜索索引中删除live别名,并将live别名分配给新的可搜索索引
  7. 以下是a simple example来说明这一点。