elasticsearch 多索引搜索和PIT索引ID重用

xdyibdwo  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(332)

我计划搜索多个不同的multiple indices at once集合。我还想使用带有时间点索引的search_after进行深度分页。我有一些关于PIT在此场景中如何/是否工作的一般性问题。
1.使用多个索引调用_pit端点可以正常工作,但我不确定它的确切工作方式-PIT索引是否与我在调用_pit时传递的逗号分隔的索引集相耦合(例如,/index-1,index-2/_pit?keep_alive=15m将打开一个PIT ID,可用于任何搜索,其中我希望从index-1,index-2获得结果)?此外,在创建多索引PIT索引时,隐式_shard_doc仲裁是否有效?

  1. guidance on the elastic blog here re:让一个后台进程创建一个用于所有搜索请求的PIT(而不是在每个搜索请求上创建一个)似乎与PIT文档相矛盾,该文档陈述了以下内容-我一定是误解了其中的一个陈述。
    打开的时间点请求和每个后续搜索请求可以返回不同的id;因此总是使用最近接收到的ID用于下一个搜索请求。
pxy2qtax

pxy2qtax1#

最终找到了答案(在同事的帮助下)。
1.支持多索引PIT索引,尽管在编写时这并没有反映在文档中。
测试并确认,打开PIT和搜索PIT都可以使用多个索引,即使文档中没有明确提及。还与ES搜索团队进行了双重检查,他们确认这是正确的。
1.是,PIT id are stable用于请求的keep_alive周期(在关于分片的类似问题的上下文中找到)。
你的问题的答案是肯定的,PIT的保证--索引中的某个时间点,而不管内部使用的是什么分片副本。如果我们再也找不到这个时间点,就会返回“找不到搜索上下文”的错误。但是正如我在前面的答案中所说的,目前我们总是返回相同的PIT id,即使我们最终使用不同的分片副本。

相关问题