求解
es是reflush 到操作系统缓存里,等待30分钟或者teanslog 到达512mb再flush将segment写入磁盘,如果操作系统缓存满了,会立即flush到磁盘么?
不会,操作系统缓存满并不会立即将数据flush到磁盘,而是会等待一定的时间,这个时间取决于配置的刷新间隔和translog大小。在Elasticsearch中,每个segment都有一个对应的translog,translog记录了segment中的所有操作,当translog达到一定大小时,Elasticsearch会将其flush到磁盘上,同时创建一个新的translog来记录后续的操作。操作系统缓存的作用是为了加速读写操作,它会将数据存储在内存中,以提高读取速度,但是当内存满时,操作系统会根据一定的策略将数据写入磁盘,这个策略和Elasticsearch的刷新策略是独立的。
因此,即使操作系统缓存满了,Elasticsearch也不会立即将数据flush到磁盘,而是会按照配置的刷新间隔和translog大小进行flush。如果需要立即将数据写入磁盘,可以调用Elasticsearch的flush API或者使用清空缓存的命令行工具。但是需要注意,频繁地flush会带来额外的磁盘写入操作,可能会降低磁盘寿命,因此需要根据实际情况进行权衡和调整。