elasticserach 索引删除 源码分析
索引的构成
在看IndicesService服务中移除索引的前提,先了解一个Index类的构成,也就是索引的一些基本信息,代码贴图如下:

主要的信息就两个:一个是name,表示索引名称,一个是uuid,表示索引的唯一标识。ok,了解这个之后。我们开始表述我们的正题,索引是怎么删除的,要删除哪些信息。
index删除过程
在indicesService类中的removeIndex方法进行索引的删除操作, 执行流程如下:
1:创建一个Map<String,IndexService>类型的HashMap叫做newIndices,将indicesService中indices中的数据复制到newIndices中
2:通过uuid将newIndices中的IndexService移除,并返回IndexService对象
3:通过unmodifiableMap方法,将newIndices 赋值给indices,并将indices设置为final。
备注: unmodifiableMap是一个java内置方法,将指定的对象设置为final并返回新的对象。这里indices初始化是一个volatile(不懂volatile可查阅具体资料),通过一个新的map对象,也就是newIndices来保证indices操作的线程安全.因为newIndices是线程内部,属于线程私有。
4:关闭分片,将分片的状态置为close,将移除原因设置为DELETE
5:关闭bitsetFilterCache,indexCache,indexFieldData,mapperService,refreshTask,fsyncTask,trimTranslogTask,globalCheckpointTask这些服务
6:执行删除操作,如果删除失败,将索引添加到pendingDeletes 中,表示当前索引已经挂起,为不可用的状态。
备注:执行删除主要是文件删除操作,删除的文件是我们配置的节点data目录下,每个目录${basepath}/nodes/0/indices下,basepath是我们在安装集群时创建的路径,而nodes/0/indices是默认路径,在indices中以index的uuid为文件夹名称的文件夹是所有的数据目录,在删除的时候就是通过uuid来删除这个目录。这个目录我查看的是5.1.1的版本。

要删除的信息就是上面截图中的文件夹。这也是我们数据的主要存储目录
7:删除所有的index元数据信息(这个起到一个保护机制,保证删除索引不会重新作为一个新的空索引导入,所以彻底删除掉。但是后面的ES版本应该会将元数据信息做一个备份或者标志一个已删除的状态,而不是全部删除清空)
ok,索引的删除操作就是这样的,在后面会继续分析这服务的其他操作,索引的创建,分片等elasticsearch的一些知识,中间还会涉及到一些内置的配置信息,会告诉你通过这些配置我们可以起到怎样的作用,怎么优化elasticseach等。
elasticserach 索引删除 源码分析的更多相关文章
- shinx索引部分源码分析——过程:连接到CSphSource对应的sql数据源,通过fetch row取其中一行,然后解析出field,分词,获得wordhit,最后再加入到CSphSource的Hits里
CSphSource 数据源 CSphSource_XMLPipe2-XML文件获取数据 CSphSource_SQL-SQL(MySQL)获取数据 CSphIndex 索引器 派生类CSphInde ...
- Mybatis 源码分析--crud
增加源码分析-insert() --------------------------------------------------------------------- public int ins ...
- LinkedList 源码分析(JDK 1.8)
1.概述 LinkedList 是 Java 集合框架中一个重要的实现,其底层采用的双向链表结构.和 ArrayList 一样,LinkedList 也支持空值和重复值.由于 LinkedList 基 ...
- sphinx源码分析总结
http://www.cnblogs.com/bonelee/p/6667955.html shinx索引部分源码分析——过程:连接到CSphSource对应的sql数据源,通过fetch row取其 ...
- Solr4.8.0源码分析(17)之SolrCloud索引深入(4)
Solr4.8.0源码分析(17)之SolrCloud索引深入(4) 前面几节以add为例已经介绍了solrcloud索引链建索引的三步过程,delete以及deletebyquery跟add过程大同 ...
- Solr4.8.0源码分析(16)之SolrCloud索引深入(3)
Solr4.8.0源码分析(16)之SolrCloud索引深入(3) 前面两节学习了SolrCloud索引过程以及索引链的前两步,LogUpdateProcessorFactory和Distribut ...
- Solr4.8.0源码分析(13)之LuceneCore的索引修复
Solr4.8.0源码分析(13)之LuceneCore的索引修复 题记:今天在公司研究elasticsearch,突然看到一篇博客说elasticsearch具有索引修复功能,顿感好奇,于是点进去看 ...
- Solr4.8.0源码分析(10)之Lucene的索引文件(3)
Solr4.8.0源码分析(10)之Lucene的索引文件(3) 1. .si文件 .si文件存储了段的元数据,主要涉及SegmentInfoFormat.java和Segmentinfo.java这 ...
- Solr4.8.0源码分析(9)之Lucene的索引文件(2)
Solr4.8.0源码分析(9)之Lucene的索引文件(2) 一. Segments_N文件 一个索引对应一个目录,索引文件都存放在目录里面.Solr的索引文件存放在Solr/Home下的core/ ...
随机推荐
- 用localStorage来存储数据的一些经验
localStorage: 是一种你不主动清除它,它会一直将存储数据存储在客户端的存储方式,即使你关闭了客户端(浏览器),属于本地持久层储存 sessionStorage: 用于本地存储一个会话(se ...
- 仿饿了吗点餐界面两个ListView联动效果
这篇文章主要介绍了仿饿了点餐界面2个ListView联动效果的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 如图是效果图: 是仿饿了的点餐界面 1.点击左侧的ListView,通过在在适 ...
- Pig order by用法举例
sorted = order data by $0; 数值类型按照数值大小比较 chararray类型按照字符的字典顺序比较 bytearray按照字节的字典顺序比较 复杂类型(map.tuple ...
- 深入理解net core中的依赖注入、Singleton、Scoped、Transient(一)
相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...
- 团队项目个人进展——Day01
一.昨天工作总结 冲刺第一天,昨天阅读了小程序官方文档关于对视图层和逻辑层的介绍 二.遇到的问题 对小程序的样式文件——WXML里的标签不太理解,相比之下,html的标签更能让人接受 三.今日工作规划 ...
- 1.创建maven 项目 动态web工程完整示例
注意,以下所有需要建立在你的eclipse等已经集成配置好了maven了,说白了就是新建项目的时候已经可以找到maven了 没有的话需要安装maven 一.创建项目 1.新建maven项目,如果不在上 ...
- Oracle诊断工具 - ORA-1578 Troubleshooting Tool
Oracle support网站提供ORA-1578错误诊断工具:ORA-1578 Troubleshooting Tool. ORA-1578 Troubleshooting Tool根据分析上传的 ...
- 解决linux buffer/cache 消耗内存过高引发的问题
工作中接到DBA报障某台服务器 跑一些大的数据,服务器就无法远程连接,报错,抓过日志叫DELL工程师检测也没问题,系统也重装过, 现在些一些较大的数据就会报如 图错误,由于服务器远在异地城市IDC机房 ...
- 剑指offer 08跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). java版本: public class Solution { public s ...
- kafka for Windows
1,保证,安装好java环境,zookeeper,并且运行zookeeper. 2,下载kafka,并解压到磁盘 下载链接http://mirrors.hust.edu.cn/apache/kafka ...