写入流程
1.连接一个节点,hash(routing_id)当前写入的index所在的主分片是否在该节点,如果不是,则协调该请求到对应主分片节点写入
2.数据写入到buffer,同时记录到translog
3.内存buffer 默认间隔1s,将据刷到文件系统缓存中 (此时,写入的数据已可以被搜索)
4.文件系统缓存将数据刷到文件,生成segment文件,每秒一个文件,同时更新commit文件
5.commit文件包含索引内所有的segment文件,后台会开启独立线程合并segment后删除旧的segment
6.translog用于恢复系统宕机时的数据。当segment刷到磁盘时,且commit文件更新,<br>translog文件才会清空。每30分钟主动flush或者文件大小大于512M,将translog更新到commit<br>
7.translog,每5s或者请求结束前,会强制将translog日志刷到磁盘。可以通过修改配置,是否异步来提高性能。
8.主分片节点写入成功之后,转发数据同步给备份的分片节点。可以设置写入多少个分片成功才算成功