90分钟搞懂github怎么实现从海量数据中搜索代码( 二 )

90分钟搞懂github怎么实现从海量数据中搜索代码
文章图片
ES的官网
简单使用如下图 , 可以切换成中文的文档
90分钟搞懂github怎么实现从海量数据中搜索代码
文章图片
或者使用spark的中文网站 , 也有ES的文档 , 传送门在下面
1)数据越大 , 存不下来 , 那我就需要多台服务器存数据 , 那么我的Lucene不支持分布式的 , 那就需要安装多个Lucene然后通过代码来合并搜索结果 。 这样很不好
2)数据要考虑安全性 , 一台服务器挂了 , 那么上面的数据不就消失了 。
ES就是分布式的集群 , 每一个节点其实就是Lucene , 当用户搜索的时候 , 会随机挑一台 , 然后这台机器自己知道数据在哪 , 不用我们管这些底层、
90分钟搞懂github怎么实现从海量数据中搜索代码
文章图片
在默认情况下 , 我们创建一个库的时候 , 默认会帮我们创建5个主分片(primaryshrad)和5个副分片(replicashard) , 所以说正常情况下是有10个分片的 。
同一个节点上面 , 副本和主分片是一定不会在一台机器上面的 , 就是拥有相同数据的分片 , 是不会在同一个节点上面的 。
所以当你有一个节点的时候 , 这个分片是不会把副本存在这仅有的一个节点上的 , 当你新加入了一台节点 , ES会自动的给你在新机器上创建一个之前分片的副本 。
90分钟搞懂github怎么实现从海量数据中搜索代码
文章图片