ElasticSearch实战
最近中美关系越来越紧张,国内经济下滑,股市一片惨淡,互联网行业越来越不景气,动不动都是跌掉几千亿市值,来写一些文档来抚慰这颗受伤的心吧。。。
随着互联网的发展,数据越来越重要,每个公司保存的数据也是越来越多,不管做什么产品,存储和搜索这些数据都面临着一些挑战,很多数据在存储了之后,基本上都被雪藏了,找不到了,更谈不上从垃圾里面找黄金了(这可能设计数据分析了,暂且不讲),那我们 今天要解决的第一步是怎么从大海里面把某一个针找到,目前市场上活跃的搜索开源产品很多,例如coreseek,solr,ElasticSearch,我们今天就来讲讲目前用的最广泛的ElasticSearch。
搜索基本上都是围绕几个方面来的:
1.索引问题
按照什么策略来生成索引 (按照数据数量)
怎么合理的生成相关的mapping
每个索引包含多少个shard,replication
每个shard的大小应该是多少
数据flush和refresh设计多大才好呢
中文字段有什么分词,使搜索更准确
索引多久进行合并,多久合并一次
如果数据源为数据库,那么多个表,每一个是生成一个type呢?还是生成一个索引
2.搜索问题
数据越来越多,如何能保证搜索的速度
如果是中文,怎么保证搜索的相关性最强
搜索时,多个shard的数据怎么进行整合,返回给client方
搜索Client用那种方式
搜索内部用了什么算法来保证搜索速度
搜索时用query还是filter
3.集群稳定性
master的选举用什么算法,怎么保证不会脑裂
大量生成mapping时,大量的网络传输,会不会造成,集群假死(不进行响应)
生成的mapping在集群中是怎么保存的
部署集群是JVM应该怎么分配
上面一些问题,基本上在初学或者后面的使用中多多少少都会遇到,我们怎么能避免这些问题呢,且听后面文章一篇一篇详细的剖析,系统通过这一系列文档来帮助一些初学者或者有同样困惑的小伙伴们