结构
索引+ mapping(库结构)
文档1,文档2。。(表)
类型
字符,数字,布尔,日期,对象,数组,ip,经纬度。。
keyword
直接建索引。
text
先分词,在建立索引。
分片
提高吞吐量,一个索引数据分散在对应分片上。
索引在创建是已经确定分片,不能动态调整。
副本
实现高可用,可以动态调整。
写入过程
协调节点-写入对应分片-同步到副本-返回
具体一点写入
-
1. 写入
写入es缓存。写入transLog。 -
2. refresh
默认一秒一次,es缓存到系统缓存。
准实事,到系统缓存才能查到。 -
3. flush
log太大 or 30分钟,os缓存刷新到硬盘,落盘之后,清空log和os缓存。 -
4. merge
定时对落盘的数据合并。
持久化延时
写入log后,重启就可以同步的硬盘。但是写log不是实时的,5秒一次。
参数可设置,es7是实时的。
删除和更新
逻辑大致和写入一样,不过是del日志文件,标记要删的数据,更新是先删后添加。
大数据保证性能
预读,如果能分辨出冷热,冷热分离,不同分片。
加内存,保证es只存需要查的数据。
分页
school
做快照,缺点占内存,不会更新。有个max_result_window
限制。
es3,可以用search-after
,类似mysql where id> 1000
;
一些命令
分词器
可以每个mapping字段指定。
大致分为3步,过滤-分割-转换(大小写)
网友评论