es 怎么解决查询慢的问题?
1、只存关键数据,其他数据存入hbase,查询的时候根据id 查询一批数据,然后根据id的范围去hbase中查询,效率会相当高。
2、因为es有一个file system cache ,第一次查询数据时,其实是去磁盘读,然后刷进缓存的,所以缓存要存热点数据,内存容量有限,,我们可以先预热一下,比如后台有一个刷到缓存的数据进程,,这样每次查询都会去缓存中查询。。
倒排索引?
字典表(内存中 hash表形式存储)
倒排列表 磁盘中以跳表的形式存储(链表+索引的形式)
es 写数据过程:
1、写数据过程
-
客户端通过hash选择一个node发送请求,这个node被称做coordinating node(协调节点),
-
协调节点对docmount进行路由,将请求转发给到对应的primary shard
-
primary shard 处理请求,将数据同步到所有的replica shard
-
此时协调节点,发现primary shard 和所有的replica shard都处理完之后,就反馈给客户端。