Lucene:一个开源的搜索库
Engine:屏蔽 Lucene 操作细节的抽象层
Http:对外提供 restful api,让不同开发语言的应用都可以接入
Elasticsearch是用 Java 开发的,但它却不是只支持Java语言,因为它支持RESTful方式调用,那理论上它是支持所有开发语言的
理解∶因为索引可以去掉重复的词,汉语常用的字和词大概等于 字典+词典;常用的英文在牛津词典也有收录;如果用计算机的速度查询 字典+词典+牛津词典这些内容是非常快的;但是用这些字典、词典组成的文章却是千千万万不计其数;
倒排索引的大小最多也就是 字典+词典。所以通过查询索引,再通过索引和文档的关联关系找到文档速度比较快。
顺序扫描法则是直接去逐个查询那些不计其数的文章就算是计算的速度也会很慢。
主分片数
即 blog 索引的数据,会被分散到 3 个分片里面,起到控制每个分片里文档数量个数的作用,提供查询和搜索效率,可以理解为 Mysql 里的分表。
副本分片
副本分片只是一个主分片的拷贝,作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务。
因为对于单节点的架构来说,进行冗余备份就毫无意义的,只会浪费内存和磁盘。
1、Solr :2004年诞生。ES:2010年诞生。ES 更新【功能越强大】
2、Solr有一个更大、更成熟的用户、开发和贡献者社区
3、当实时建立索引的时候,Solr会产生IO阻塞,而ES则不会,实时建立索引时,ES性能要高于Solr 。
在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。
4、Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目】
5、Solr支持更多的格式数据[xml,json,csv等],而es仅支持json文件格式。
6、Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。单纯的对已有数据进行检索的时候,solr效率更好,高于es。
7、Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多由第三方插件。