1.如果条件允许,内存和cpu一定要足够多,要超过总数据量的1半以上最好,当然数据量很大的时候要在经常查询数据的2倍以上。

2.数据分离存储,经常查询的数据放一些索引,不经常查询的放一部分索引,然后通过唯一的id关联即可,需要查那些不经常查的数据的时候通过id查询即可,这里可以和hbase联合使用。把条件字段和经常查看的字段放在es中,不经常查看的放hbase中,这样既可以省es的空间,性能效果也俱佳

3.数据大时,每个索引的数据量不要太大,一般很大的时候可以每天一个索引,或者每月一个索引,具体看业务来选择

4.进行数据预热,即,每天或者定期后台去访问那些经常查询的数据,把它们加载到filesys_cache中去,因为es查询时,如果缓存里有该数据就直接从缓存读取,没有就去硬盘把数据加载到该缓存中,下次再查时就快很多了,所以有时候es第一次查询时会有点慢,后面就快很多了

5.es中不要做太复杂的查询,尤其是关联查询,如果有些一定要关联,关联的条件也要尽量少,比如id即可

6.可以使用fitter过滤会快很多,尽量不要存为全文索引的数据类型,

7.es不适合做长期存储,一般只挑近期的,常用的放进去即可,久远的数据或者不常查询的,可以放到hive中,那些查的少,肯定速度也不要求,所以放hive中最合适

8.查询的时候当然是副本多一些比较好,但是一般3个副本就可以了,太多也不合适

9.有钱的话,多加一点cpu和内存是最好的,这是最实在的办法,有钱了,有资源了,上面那些就显得微不足到了。

10.另外es查询的时候尽量不要排序,看情况而定吧,排序的时候可能会有点慢。

11.kibana是个好东西,很多功能足够了,唯一的缺点就是不能进行权限控制,社区版已经具备不少功能了,当然有能力可以使用付费的,效果肯定更好,这是对没有开发能力和不想花太多时间去写es代码的同学说的。有时间,当然自己写一个系统来事先es查询肯定定制化开发更好的。