赞
踩
为了深入学习Elasticsearch和Lucene,本文从Elasticsearch索引的创建过程入手,对Refresh和Flush两个重要的API做一个小实验。从而理解Elasticsearch在接收到一个文档后,是如何对其进行索引的。了解了整个流程,后续我们再深入学习Lucene索引的内存数据结构和磁盘文件格式。注:本文使用Elasticsearch和Kibana 7.10.2。
创建索引lucene-learning
,设置shard数为1,关闭replica,同时关闭refresh和flush(强制间隔为一小时)。
PUT lucene-learning { "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 0, "refresh_interval": -1, "translog": { "sync_interval": "3600s" } } }, "mappings": { "properties": { "name": { "type": "text" }, "age": { "type": "integer" } } } }
从Elasticsearch的目录结构可以看出,索引名和文件夹名是对应的。因为lucene-learning
索引只有一个分片0,所以这里只有一个文件夹0
,里面有index
和translog
两个目录。前者对应的就是一个Lucene的索引(Elasticsearch的Shard等于Lucene的Index),这个文件夹完全由Lucene管理,Elasticsearch不会直接写这里的文件,所有交互应该都是通过Lucene API完成。而后者就是存放Elasticsearch的translog的文件夹了。此时这两个文件里还都没有什么实际内容,一会我们还会再查看它们。
GET _cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open lucene-learning yGvjXskJQlql1-b2Sx2MHA 1 0 0 0 208b 208b
$ pwd
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。