(1)性能优化的杀手锏——filesystem cache (即 os cache,操作系统的缓存)
es的搜索引擎严重依赖于底层的filesystem cache,
你如果给filesystem cache更多的内存,尽量让内存可以容纳所有的indx segment file索引数据文件,那么你搜索的时候就基本都是走内存的,性能会非常高。
比如说,你一共要在es中存储1T的数据,那么你的多台机器留个filesystem cache的内存加起来综合,至少要到512G,
至少半数的情况下,搜索是走内存的,性能一般可以到几秒钟,2秒,3秒,5秒
如果最佳的情况下,filesystem cache 的大小 大于 ES所需要搜索的数据大小。
ES中只写入需要索引的那几个字段,不要把整条记录都写到 ES中。
比如说,ES就写入 id name age三个字段就可以了,然后你可以把其他的字段数据存在hbase或mysql中,建议是HBase。
hbase的特点是适用于海量数据的在线存储,就是对hbase可以写入海量数据,不要做复杂的搜索,就是做很简单的一些根据id或者范围进行查询的这么一个操作就可以了
从es中根据name和age去搜索,拿到的结果可能就20个doc id,然后根据doc id到hbase里去查询每个doc id对应的完整的数据,给查出来,再返回给前端。