高峰只对攀登它而不是仰望它的人来说才有真正意义。

es query and fetch 2个操作数据可能不一致问题

Elasticsearch | 作者 zisonmo | 发布于2024年04月29日 | 阅读数:3872

版本:6.2.4
 关于es search 请求,会被分为query和fetch 2个阶段,如果query回来的数据,在fetch之前,数据已经变更,那么fetch回来的数据是最新的,可能已经不满足query的条件。这个时候,es如何处理
已邀请:

Charele - Cisco4321

赞同来自: FFFrp zisonmo

不会出现你说的这种情况。
1 query阶段,拿到doc
2 fetch阶段,根据doc去取数据
 
在阶段1,会生成一个reader(里面包含此时的所有段),
 
如果在执行阶段2之前,数据发生了改变,会生成新段。
(如果refresh了,肯定会生成新段。如果没refresh,那就无所谓了,因为没任何人可以查到新数据)
 执行阶段2时,用的阶段1时生成的reader。
这个reader里,是没有新段的,所以看不到数据的变化。
 
新版ES里有叫PointInTime查询的东东,
原理差不多,你可以试一下。
 
 

要回复问题请先登录注册