文档章节

elasticsearch入门篇:数据存储方式研究:elasticsearch数据存储

o
 osc_y8yehimr
发布于 2019/03/20 16:56
字数 651
阅读 6
收藏 0

之前的两篇文章回顾:

第一篇介绍了数据库索引在模糊搜素方面的局限性,介绍了Lucene是如何通过倒排索引解决这个问题的。简单的介绍了一下倒排索引的存储原理。

第二篇通过一个单元测试简单的演示了一下插入和搜索的过程,最后给大家看了一下程序执行搜索和插入操作的时候,Lucene的工作目录里面生成的几个文件和文件的作用概要。

其实打开elasticsearch的工作目录可以发现elasticsearch里面有和Lucene的工作目录下相同的文件。接下来准备结合Lucene和elasticsearch讲讲这些文件。略过elasticsearch环境的搭建过程,直接进入工作目录查看,对比如下(第一张是我安装elasticsearch时候的安装目录,第二张图片是我在跑上一篇单元测试用例时候指定的临时文件夹,Lucene运行时候的临时文件放在了这里):

可以看到:文件是一样的。

然后我们来看外层的目录结构,来体验elasticsearch在Lucene基础上做了什么,以及这么做的目的。

(1)首先说segements:因此可以看见每个

 

(2)然后说一下nodes:

可以看到默认有5个节点在elasticsearch启动之后工作。点开任一node可以看到每个node都有一个index和一个translog:

Elasticsearch的index类似于关系型数据库的库的概念,在保存数据前,要先创建索引。在集群中index和node的关系如下图:

 

 (3)再说index和translog:

然后说translog:上一篇文章说到Lucene里面segments文件是数据存储最重要的文件。数据是由一个个segment组成的,数据先写入内存,经过设置的时间间隔将该时间段写入内存的数据全部刷到一个segment中,由于一段时间生成一个segment,避免了短时间内写入一个较大的磁盘文件,segment多了之后会进行merge成更大的segment。因此最初的数据写入的数据是在内存中完成,所以写入效率非常高。但是写入过程中如果掉电导致内存里面的数据没及时落盘,就会出现丢失数据的问题,所以Elasticsearch基于此现象实现了translog,只有在segment数据落盘后,Elasticsearch才会删除对应的translog。

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

在virtualenv中使用Python 3 - Using Python 3 in virtualenv

问题: Using virtualenv , I run my projects with the default version of Python (2.7). 使用virtualenv ,我使用默认版本的Python(2.7)运行项目。 On one project, I need to use Pyth......

富含淀粉
43分钟前
9
0
Python的__init__和self是做什么的? - What __init__ and self do on Python?

问题: I'm learning the Python programming language and I've came across something I don't fully understand. 我正在学习Python编程语言,遇到了一些我不太了解的东西。 In a method ......

javail
今天
15
0
OSChina 周五乱弹 —— 你大妈还是你大妈

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @watergood:是时候分享一波我的这张纯音乐歌单了,过去的五年多时间里,我陆陆续续地把听到的好听的纯音乐添加了进去,目前一共65首,相信总...

小小编辑
今天
25
0
在Objective-C中生成随机数 - Generating random numbers in Objective-C

问题: I'm a Java head mainly, and I want a way to generate a pseudo-random number between 0 and 74. In Java I would use the method: 我主要是Java头,我想要一种生成0到74之间的伪随......

技术盛宴
今天
13
0
ftp-ftps-sftp的关系

Ftp FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作...

独钓渔
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部