2015-08-29 16 views
0

我想填充一个索引,但只有在完成后才能使其可搜索。有没有一种标准的方式来进行弹性搜索?我想我可以设置"index.blocks.read": true,但是我想要一种能够弹性查询可搜索索引列表的方法,并且我不知道如何使用该设置来执行此操作。关闭/打开索引感觉有点麻烦。我可以将弹性搜索索引标记为不完整吗?我可以检索“完整”索引列表吗?

我找到的解决方案是将文档添加到定义该索引状态的每个索引。虽然查询索引列表有点烦人。具体而言,因为查询和分类2000多份索引状态文件的长列表是有问题的。滚动扫描是一种解决方案,因为它一次性提供了所有结果(因为每个分片最多只有一个索引状态文档)。虽然这感觉就像我使用错误的工具进行工作(即滚动扫描操作始终只执行一次滚动)。

我不想要一个引用所有索引的文档,因为那样我就不得不手动将它与垃圾收集索引一起手动收集。但也许这是最好的折衷...

有没有我不知道的标准做法?

回答

1

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

基本上,过程是这样的:

  1. 创建它的设置和映射的索引
  2. 填充它
  3. 完成后,assign the live alias它并发送你的查询反对
  4. 后来当您需要索引新数据时,您将创建另一个索引
  5. 您可以填充该新索引
  6. Whe ñ这样做,你switch the aliases,即从以前的搜索索引中删除live别名和live别名分配给新的搜索索引

这里是a simple example演示这一点。

+0

我相信这是一个很好的解决方案。谢谢! – ubershmekel

+0

很高兴能帮到你! – Val

相关问题