Segments

执行效果

  • 命令  在 sense 里边执行  GET /abcd/_segments  前边的是索引名称,后边是请求 段信息
  • 说明  索引是面向分片的,是由于索引是由一个或多个分片(以及它的副本)构成,每个分片就是一个物理上的Lucene索引
  • 返回

名词解释

  • 已提交索引段:指那些已经执行了提交命令的段,意味着已经提交到磁盘持久化并且是只读的;
  • 可查询索引段:可供查询使用的索引段;
  • 索引的代:告诉我们索引有多“老”,起初创建的索引段的代为0,接着是1,依次继续;
  • 被标记为已删除的索引数:这些文档会在索引段合并的过程中被删除;

Cache

分类

  • 过滤器缓存
  • 字段数据缓存

哪些场景会使用到缓存

  • 父子索引
  • 切面
  • 基于索引字段的高效排序

过滤器缓存

索引级过滤器缓存

index.cache.filter.type:类型 resident,soft,weak或node(默认值)

index.cache.filter.max_size:存储到缓存中的最大纪录数,默认为-1,应用于指定索引的某个分片的某个索引段上;

index.cache.filter.expire:指定过滤器缓存中记录的过期时间,默认为-1,60m代表60分钟;

节点级别过滤器缓存

应用于给定节点的所有分片,可以利用下边的参数设置缓存的大小:

indices.cache.filter.size:可以使用百分数 1% 占用当前最大堆内存的百分比,也可以设置数字 如 1024mb

移除策略:LRU

字段数据缓存

说明

字段数据缓存在我们涉及到 切面计算 或 基于字段数据排序使用

做法:加载相关字段的全部数据到内存中。

配置

index.fielddata.cache.type:同上

index.fielddata.cache.size:同上

index.fielddata.cache.expire:同上

过滤

上边的索引尤其是字段索引都是es的默认机制,将 切面计算的字段和排序的字段做的默认的fielddata索引,

现在我们选择性的将一些字段数据缓存做一个定制化

这样做的好处是:将一些低频词项甚至是错误的词从字段缓存中删除,降低字段缓存的总量;

基于词频和正则表达式过滤

只加载那些词频高于指定最小值且低于指定最大值的词项,词项的范围是针对索引段的。

 {
...
properties:{
"field":{
"type":"string",
"index":"not_anlyzed",
"fielddata":{
"filter":{
"frequency":{
"min":0.01, 词项出现频率大于1%
"max":0.4, 词项出现频率小于40%
"min_segment_size":100 该索引段至少要有100个文档
},
“regex”:"^#.*" 词项必须以#开头
}
}
}
}
} 只有符合以上过滤条件的 词项 才会被缓存

清除缓存

  • 清除全部缓存      _cache/clear
  • 清除指定缓存      index/_cache/clear
  • 清除指定类型缓存     index/_cache/clear?filter=true&field_data=false&bloom=true   清除索引的filter缓存和bloom缓存,保留fielddata字段数据缓存
  • 清除指定字段缓存     index/_cache/clear?fields=title,price  清除字段为field和price的全部缓存

问题

  1. filtercache是如何存储和获取的?
  2. fielddatacache是如何存储和获取的?
  3. segments的创建和merge机制是怎样的?

segments&cache的更多相关文章

  1. Erlang 虚拟机内的内存管理(Lukas Larsson演讲听写稿)

    Erlang核心开发者Lukas Larsson在2014年3月份Erlang Factory上的一个演讲详细介绍了Erlang内存体系的原理以及调优案例: http://www.erlang-fac ...

  2. Java中的注解是如何工作的?--annotation学习一

    自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解.这篇文章中,我将向大家讲述 ...

  3. Elasticsearch 通关教程(七): Elasticsearch 的性能优化

    硬件选择 Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件../config/elasticsearch. ...

  4. BUFFER CACHE之主要的等待事件

    原因:资源紧张,等待其释放. 原因的原因:1. lgwr和DBWn进程写太慢:2. Buffer和latch不可用 原因的原因的原因:全表扫描.library cache latches数太多等. 视 ...

  5. Linux内存中的Cache真的能被回收么?

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: [root@tencent64 ~]# free       ...

  6. guava cache使用和源码分析

    guava cache的优点和使用场景,用来判断业务中是否适合使用此缓存 介绍常用的方法,并给出示例,作为使用的参考 深入解读源码. guava简介 guava cache是一个本地缓存.有以下优点: ...

  7. nginx cache的玩法

      一.简介 Nginx版本从0.7.48开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当做Key,用Md5算法对Key进行哈希,得到硬盘上对应的哈希目录路径,从而将缓存内容保存在 ...

  8. 【转载】row cache lock

    转自:http://blog.itpub.net/26736162/viewspace-2139754/   定位的办法: --查询row cache lock等待 select event,p1   ...

  9. Google guava cache源码解析1--构建缓存器(3)

    此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 下面介绍在LocalCache(CacheBuilder, CacheLoader)中调用的一些方法: Ca ...

随机推荐

  1. Java实现时间动态显示方法汇总

    这篇文章主要介绍了Java实现时间动态显示方法汇总,很实用的功能,需要的朋友可以参考下 本文所述实例可以实现Java在界面上动态的显示时间.具体实现方法汇总如下: 1.方法一 用TimerTask: ...

  2. Unsupported major.minor version 52.0问题的解决

    下载Tomcat9.0,解压后安装运行,结果启动失败,进入logs文件夹看里面的日志文件,提示是Unsupported major.minor version 52.0错误,这是因为Tomcat版本过 ...

  3. border:0与border:none区别与联系

    联系:前台效果均实现了无边框 区别: 要解释区别,首先得先介绍一下border这个属性. border是一个简写属性.可以设置如下属性 border-width border-style border ...

  4. PHP页面跳转(PHP笔记)

    目前学习到三种方法: 1.调用js跳转 2.header()跳转 3.调用HTML方法实现 因为一直在自己学习没有进入项目,并不知道哪个更常使用. 调用js跳转. <?php //这里是跳转方法 ...

  5. 云巴:基于MQTT协议的实时通信编程模型

    概要 有人常问,云巴实时通信系统到底提供了一种怎样的服务,与其他提供推送或 IM 服务的厂商有何本质区别.其实,从技术角度分析,云巴与其它同类厂商都是面向开发者的通信服务,宏观的编程模型都是大同小异, ...

  6. entityframework学习笔记--003-使用model first

    首先,我个人觉得这(model first 即模型优先)是一个鸡肋似的功能.当赞扬着他的强大的功能的同时,你也会觉得这个功能好像是不是不怎么需要,也很少使用. 1.右键你的项目,选择"添加& ...

  7. js 20160810

    jquery 获取不到所有相同id 的元素 ,只能获取此id的第一个元素.可以获取所有相同class 的元素

  8. 从 HTTP 到 HTTPS - IIS 部署免费 HTTPS

    这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验. 这篇文章与 博客园 和 Segmentfault 共享. 前端开发QQ群:3 ...

  9. [ jquery 过滤器 hasClass(class) ] 此方法用于在选择器的基础之上检查当前的元素是否含有某个特定的类,如果有,则返回true

    此方法用于在选择器的基础之上检查当前的元素是否含有某个特定的类,如果有,则返回true 实例: <!DOCTYPE html> <html lang='zh-cn'> < ...

  10. 【Swift】 应用内显示 AppStore 某个应用的详情

    前言 应用内跳转到 AppStore 的文章很多,一般都是用 SKStoreProductViewController 来实现的,不知道有没有在意一个问题:打开很慢!!怎么忍?! 声明 欢迎转载,但请 ...