前言,认识Elasticsearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,
能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,
我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,
我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。
Elasticsearch旨在解决所有这些问题和更多的问题。
在windows上搭建ES集群环境
首先去官网下载最新的ES,地址:点我下载 , 这个链接提供的是windows版本的,下载下来的是一个zip压缩文件,解压缩后的文件结构如下:
其实,现在你就可以用cmd进入到bin目录直接运行 elasticsearch.bat来启动你的服务了,但是为了方便在任何目录都能轻松的启动我们的es服务,我们需要把bin目录添加到环境变量中,具体操作如下:
接下来在path变量中引用ES_HOME
现在你已经可以在任意目录使用 elasticsearch 来启动你的服务了,服务启动后,如果没有改配置文件的话,http服务默认监听9200端口,
你可以在地址栏输入localhost:9200来连接你的ES服务,服务正常的话会响应如下类似的信息
代码语言:javascript复制{
"name" : "node-1",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.2.1",
"build_hash" : "d045fc29d1932bce18b2e65ab8b297fbf6cd41a1",
"build_timestamp" : "2016-03-09T09:38:54Z",
"build_snapshot" : false,
"lucene_version" : "5.4.1"
},
"tagline" : "You Know, for Search"
}
安装ES插件
head插件
ES有很多插件供我们选择,现阶段对我们有用的就是集群管理工具head插件,它是有grunt构建的html5编写的独立网页程序,
你可以通过插件把它集成到es里,有数据库使用经验的都知道,每个数据库都提供了客户端管理软件,如果我们把es类比数据库的话,
那么这个head插件就是我们的数据库客户端管理软件安装插件很简单,可以离线安装,也可以使用命令安装,这里推荐使用命令安装,
方便快捷因为我们配置了环境变量了,所有安装插件的时候也可以任意目录输入如下命令:
安装完成后会在我们的plugins目录下多一个head的文件夹,要使用插件,需要重启动你的服务,启动完成后在你的es服务地址后面加上/_plugin/head/,
如:http://localhost:9200/_plugin/head/,服务正常的话,你会看到如下的页面,页面中有很多ES服务的描述信息,以及一目了然的数据信息
中文分词插件
国内使用的话当然还需要一个中文分词的插件,Elasticsearch默认的分词器对中文的支持不是很好,一元分词,只是单个的去标点的单字拆分,这里我们安装一个smartcn中文分词器,这个在Lucene中文分词那篇文章中有讲到https://cloud.tencent.com/developer/article/2360218
安装分词:plugin install analysis-smartcn ,安装完成后,重启我们的es服务,可以直接测试分词的效果,下面是我的测试结果:
集群节点配置
做完以上步奏,我们一直都还没有接触ES服务的配置文件,因为ES都给我们做了默认的处理了,比如http监听端口9200,以及数据存储路径,log日志路径等等,
当我们需要多个多个节点做集群的时候,就一定要配置一些东西了,具体配置如下,我这里是最新版的,不知道版本间有没有很大的差异 :
cluster.name:elasticsearch #集群应用的名称
node.name: node-1 #节点的名词
network.host: 127.0.0.1 #服务连接发布地址
http.port :9200 #http服务监听端口
其他的配置暂时默认就好
配置完成后启动一个服务,然后拷贝一份ES解压后的目录,配置文件修改如下 :
node.name: node-2 #节点的名词
http.port :9201 #http服务监听端口
其他的不变,一定要保证集群的应用名称是一致的,然后进入到ES的副本的bin目录下启动服务,成功后用head插件查看,可以看到两个node节点,如下: