Nginx防盗链
1 | # 源站点验证 |
由于Lucene采用了延迟写的方式来减少磁盘写入次数,但是这样会出现数据在内存中还没有持久化到磁盘时发生故障使得数据丢失,Elasticsearch通过使用事务日志(translog)来解决该问题,事务日志用来保存所有没有被持久化磁盘的数据(所有未提交的事务),当有错误发生时,事务日志将会被检查,必要时会再次执行某些操作,以确保没有丢失任何更改。事务日志中的信息与存储介质之间的同步(同时清空事务日志)被称为事务日志刷新(flushing)。
写索引的过程
index.translog.flush_threshold_period
和index.translog.flush_threshold_ops
和index.translog.flush_threshold_size
translog在不断的增大,当经过一段时间(index.translog.sync_interval)则执行fsync操作,将所有File system cache中的segment写入磁盘,而translog会被删除(如果fsync还没有执行突然断电了,此时的translog是保留的,elasticsearch可以根据translog来进行数据的还原和恢复)
1 | 除了可以自动刷新还可以使用api手动刷新 |
事务日志配置
index.translog.flush_threshold_period
默认30分钟,控制了强制自动Flush的时间间隔index.translog.flush_threshold_ops
当索引更改操作次数超过该数时,强制进行Flush操作index.translog.flush_threshold_size
事务日志的最大容量,超过该值时,强制进行Flushindex.translog.sync_interval
多长时间检查一次translog,进行刷新到磁盘index.gateway.local.sync
通过fsync系统调用同步事务日志数据的频率index.translog.disable_flush
禁用事务日志刷新index.translog.durability
默认是request,表示事务日志成功提交之后才会回复客户端成功,也就是同步的;如果设置为async,会经过index.translog.sync_interval
检查一次translogElasticsearch中提供了查询二次评分机制,能对查询的返回文档的前若干个文档重新打分。
其过程是先取得某个查询的命中文档的前N个,然后执行某个公式为这些文档重新打分
如下示例
1 | { |
此时文档的得分就会变成publishTime字段的值再加上原本查询的得分