@StrGlee
2016-10-20T16:21:45.000000Z
字数 1017
阅读 1148
elasticsearch
lucence用的一个searcher抽象类来执行索引的读取,默认每秒刷新(refresh)一次。
手动刷新:
curl -XGET localhost:9200/test/_refresh
curl -XPUT localhost:9200/test/_settings -d '{
"index":{
"refresh_interval": "5m", # 更改为5分钟
}
}'
ES 通过使用事务日志(transactionlog)来保存所有未提交的事务日志。当有错误发生时,就会检查事务日志,必要时会再次执行某些操作,以确保没有没有丢失任何信息。而且,事务日志相关操作都是自动完成的。事务日志中的信息与存储介质之间的同步(同时清空事务日志)称为事务日志刷新(flushing)。
注:searcher 刷新是你所期望的,即搜索到最新的文档。而事务日志刷新是用来确保数据正确写入到索引并清空了事务日志。
强制刷新事务日志
curl -XGET localhost:9200/_flush
curl -XGET localhost:9200/goods/_flush
curl -XGET localhost:9200/goods/_refresh
curl -XPUT localhost:9200/test/_settings -d '{
"index": {
"translog.disable_flush" : true
}
}'
注: 导入数据完毕后要重新设置事务日志刷新相关参数
事务日志带来新特性: 准实时读取(real-time GET) ,该功能让返回文档各种版本(包括未提交版本)成为可能。实时读取操作从索引中读取数据时,会先检查事务日志中是否有可用的最新版本。如果近期索引中没有与事务日志中的数据同步,那么索引中的数据将被忽略,返回事务日志中的数据。
curl -XGET localhost:9200/test/test/1?pretty