Elasticsearch 的数据存储方式:
Lucene 把每次生成的倒排索引,叫做一个段(segment).然后另外使用一个 commit 文件记录索引内所有的 segment,生成 segment 的数据来源,refresh到内存中的 buffer。
从写入refresh到文件缓存buffer中默认设置为 1 秒。
Elasticsearch 在把数据写入到内存 buffer 的同时,其实还另外记录了一个 translog 日志。通过translog 日志真正把 segment 刷到磁盘,同时commit 文件进行更新,然后translog 文件才清空。这
一步,叫做 flush。默认设置为:每 30 分钟主动进行一次 flush。
上述两个过程保证数据实时查询和持久化数据。
注:5.0 中还提供了一个新的请求参数:?refresh=wait_for,可以在写入数据后不强制刷新但一直等到刷新才返回。对于日志记录,可以等到时间缓冲后再刷新,不需要保证实时,"refresh_interval":
"10s";对于归档的数据导入时,可以先设置"refresh_interval": "-1"关闭刷新,导入完后手动刷新即可。
注:为了减小系统开销,小的segment归并成大的segment再提交保存。segment 归并的过程,需要先读取 segment,归并计算,再写一遍 segment,最后还要保证刷到磁盘。5.0后引入Lucene的CMS自动调
整机制,默认设置是 10240 MB;封
Lucene 把每次生成的倒排索引,叫做一个段(segment).然后另外使用一个 commit 文件记录索引内所有的 segment,生成 segment 的数据来源,refresh到内存中的 buffer。
从写入refresh到文件缓存buffer中默认设置为 1 秒。
Elasticsearch 在把数据写入到内存 buffer 的同时,其实还另外记录了一个 translog 日志。通过translog 日志真正把 segment 刷到磁盘,同时commit 文件进行更新,然后translog 文件才清空。这
一步,叫做 flush。默认设置为:每 30 分钟主动进行一次 flush。
上述两个过程保证数据实时查询和持久化数据。
注:5.0 中还提供了一个新的请求参数:?refresh=wait_for,可以在写入数据后不强制刷新但一直等到刷新才返回。对于日志记录,可以等到时间缓冲后再刷新,不需要保证实时,"refresh_interval":
"10s";对于归档的数据导入时,可以先设置"refresh_interval": "-1"关闭刷新,导入完后手动刷新即可。
注:为了减小系统开销,小的segment归并成大的segment再提交保存。segment 归并的过程,需要先读取 segment,归并计算,再写一遍 segment,最后还要保证刷到磁盘。5.0后引入Lucene的CMS自动调
整机制,默认设置是 10240 MB;封