搜索是在各个web网站、电商平台以及各个技术论坛等都需要解决和面临的一个难题,信息量都非常多,数据在以TG级别增长传统的关系型数据已经出现了瓶颈,不能够准确、实时查询到我们需要的结果,既要保证用户体验在分分秒秒内完成所要查询的结果,又要保证数据的实时 、准确 、可靠,传统的DB难以完成这样的用户需求,在查询要求日渐增长的背景下,出现了很多在搜索方面出色的框架,这里向大家介绍几种,比如solr 、elasticsearch 、Lunece等,都是目前比较通用的搜索引擎,其中solr、es是用的比较普遍的,这几年的排行榜中solr一直处于第一位,es排第二位。
不过感觉从公司的使用角度来看使用es的比较多,至少我待过的公司都在使用es作为搜索框架, 我们目前公司神州租车也是用es来处理搜索数据,它的功能还是挺强大的可以满足我们的业务要求,也是是因为它的简单好用、性能好,开发人员和公司技术都容易接触,出了问题好解决就选了这个作为搜索框架,有很多技术选型也是公司老大来定,作为一个开发权利还是不够的,但我们应该对于每一个优秀的框架有自己的见解和熟练使用,理解它的应用场景、业务场景,才会提高自身水平。
对于初次使用es的朋友,重点是对一些概念的理解,下面是一些概念的定义
这些概念我们可以对比数据库来理解会容易一些,事实上也是类似差不多的,只多了分片、复制从字面意思也可以理解。
概念就不多说了,不理解的可以多多看看网站的文章,参考一下大家对每个概念的理解,会帮助我们理解相互碰撞一下思想。
es架构图
es架构对于我们理解es处理数据的过程很有帮助,它的最底层支持多种数据系统如文件系统、分片系统、hadoop分布式系统等,将数据文件存储在磁盘上面,在往上就是lucence,模块、mapping,已经对数据进行了模块化处理,就好像数据是一块大蛋糕,把数据切割成很多小份然后,又平均分配到各个机器上面;然后,是对机器的管理,zen模块可以动态发现机器,如果有挂掉的机器那么将主动切换其它为master,另外es支持传输协议有thrift、http、memcached三种,默认采用http协议,像外提供了标准RESTFUL api ,而且对java支持很好。
window安装搭建
window安装非常简单下载下来,然后执行一下bat命令既可,需要注意的一点是,es版本和jdk版本要对应,否则会运行不起来,提示下面错误:
安装步骤可以自己百度,我这里安装的1.7.0版本 jdk 1.7.8
插件安装
head 在学习es中难免要查看服务器段的状态和数据,如果都是使用http查看显着不够直观和易用,head就是来帮助我们更好的查看和管理es集群服务的插件.
效果图如下:
bigdesk
bigdesk可以直观的看出每个索引的时间、状态、cpu等信息,方便查看问题,建议大家多多使用。
在下面博客中会使用 es更详细的内容来开发项目。