[关闭]
@StrGlee 2016-10-20T16:21:45.000000Z 字数 1017 阅读 1163

elasticsearch 底层索引控制

elasticsearch

使用编码器

可用倒排表格式

准实时、提交、更新及事务日志

索引更新和更新提交

lucence用的一个searcher抽象类来执行索引的读取,默认每秒刷新(refresh)一次。
手动刷新:

  1. curl -XGET localhost:9200/test/_refresh

更改默认的刷新时间

  1. curl -XPUT localhost:9200/test/_settings -d '{
  2. "index":{
  3. "refresh_interval": "5m", # 更改为5分钟
  4. }
  5. }'

事务日志

ES 通过使用事务日志(transactionlog)来保存所有未提交的事务日志。当有错误发生时,就会检查事务日志,必要时会再次执行某些操作,以确保没有没有丢失任何信息。而且,事务日志相关操作都是自动完成的。事务日志中的信息与存储介质之间的同步(同时清空事务日志)称为事务日志刷新(flushing)

注:searcher 刷新是你所期望的,即搜索到最新的文档。而事务日志刷新是用来确保数据正确写入到索引并清空了事务日志。

强制刷新事务日志

  1. curl -XGET localhost:9200/_flush
  2. curl -XGET localhost:9200/goods/_flush
  3. curl -XGET localhost:9200/goods/_refresh

事务日志相关配置

  1. curl -XPUT localhost:9200/test/_settings -d '{
  2. "index": {
  3. "translog.disable_flush" : true
  4. }
  5. }'

注: 导入数据完毕后要重新设置事务日志刷新相关参数

准实时读取

事务日志带来新特性: 准实时读取(real-time GET) ,该功能让返回文档各种版本(包括未提交版本)成为可能。实时读取操作从索引中读取数据时,会先检查事务日志中是否有可用的最新版本。如果近期索引中没有与事务日志中的数据同步,那么索引中的数据将被忽略,返回事务日志中的数据。

  1. curl -XGET localhost:9200/test/test/1?pretty
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注