第一步:本机如何安装Java8 环境,请自行baidu.
第二步:安装ElasticSearch
1、从官网下载ElasticSearch,https://www.elastic.co/downloads/elasticsearch,下载Zip包。
我下载的最新版本为:elasticsearch-6.3.2
2、解压到指定目录文件夹中,我这里指定的目录文件夹目录:D:\elasticsearch。
3、进入elasticsearch解压指定目录,进入bin 文件夹中(D:\elasticsearch\elasticsearch-6.3.2\bin),执行elasticsearch.bat
4、本机启动一个elasticsearch节点,启动后如图所示:
5、打开浏览器,访问(http://localhost:9200/),测试elasticsearch是否安装成功。
第三步:安装ElasticSearch-head插件
网上很多文章都说使用plugin插件指令去安装elasticSearch-head,我查看了下elasticsearch安装目录,里面存在plugin插件文件,但是在bin 目录中,不存在plugin指令。后面查看官网安装文档给出的意思如下:
elasticsearch6不支持直接通过plugin -install mobz/elasticsearch-head安装,并且elasticsearch-head需要在node环境下运行。
1、本机搭建nodejs 环境,自行baidu.
2、安装grunt
- grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.x里的head插件就是通过grunt启动的。因此需要安装grunt.
- 注意:路径切到nodejs安装目录下,[我安装在D:\node\node-v8.11.3]。
cnpm install -g grunt-cli
- -g代表全局安装。安装路径为
D:\node\node-v8.11.3\node_modules
,并且自动加入PATH变量。 - 查看版本号
grunt -version
3、下载head插件
https://github.com/mobz/elasticsearch-head
4、配置head
由于head的代码还是2.6版本的,直接执行有很多限制,比如无法跨机器访问。因此需要用户修改两个地方:
① c:/elasticsearch-head-master/Gruntfile.js,增加hostname属性,设置为*,如图
②修改连接地址:C:\elasticsearch-head-master/_site/app.js,将表红线地址改为es服务器地址。
修改一下es使用的参数。编辑C:/elasticsearch-5.3.0/config/config/elasticsearch.yml:
-
cluster.name: es-5.2-test #换个集群的名字,免得跟别人的集群混在一起
-
node.name: node-es-101 #换个节点名字
-
network.host: 0.0.0.0 #修改一下ES的监听地址,这样别的机器也可以访问
-
http.port: 9200 #端口号,默认就好
-
# 增加新的参数,这样head插件可以访问es
-
http.cors.enabled: true
-
http.cors.allow-origin: "*"
-
@注意,设置参数的时候:后面要有空格!
5、安装head
其实下载elasticsearch-head的时候,github的链接上有介绍安装方式,如下:
-
git clone git://github.com/mobz/elasticsearch-head.git
-
cd elasticsearch-head
-
npm install
-
npm run start
-
open http://localhost:9100/
进入到我们下载好的elasticsearch-head包里,然后执行npm install
安装完成之后npm run start
或grunt server
浏览器访问 http://localhost:9100/
到此,Elasticsearch和ElasticSearch-head已经装好了。
第四步:ElasticSearch集成分词插件。
全文搜索对于中文分词很重要,所以需要ik插件分词支持中文分词
英文使用空格很容易分词,中文需要根据词意进行分词,需要【字典】支持
插件项目:https://github.com/medcl/elasticsearch-analysis-ik
未安装前【分词测试】
postman
post http://localhost:9200/_analyze
{
"text":"活动在广东省汕头市澄海区溪南镇举行吗"
,"analyzer":"standard"
}
//或者直接
{
"text":"活动在广东省汕头市澄海区溪南镇举行吗"
}
//测试英文
{
"text":"I am a good man"
}
安装方法,任意一种:
1、下载 zip 包后,【直接】解压到elasticsearch-6.2.1\plugins\目录下,最后路径类似:elasticsearch-6.2.1\plugins\elasticsearch\plugin-descriptor.properties
zip 包地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
2、es >v5.5.1 (看es安装目录,elasticsearch-6.2.1\bin\elasticsearch-plugin.bat 有没有)
//命令提示符, 下载安装,可能比较慢
C:\Users\test>D:\java\elasticsearch-6.2.1\bin\elasticsearch-plugin.bat install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.1/elasticsearch-analysis-ik-6.2.1.zip
重启es
查看插件是否安装
get http://localhost:9200/_cat/plugins
//显示,表示安装
jbLBIzO analysis-ik 6.2.1
安装ik分词插件后,【分词测试】
post http://localhost:9200/_analyze
{
"text":"活动在广东省汕头市澄海区溪南镇举行吗"
,"analyzer":"ik_max_word"
}
【注意analyzer的名称】(在源码的org/elasticsearch/plugin/analysis/ik/AnalysisIkPlugin.java#getAnalyzers注册的map名字)
public Map<String, AnalysisModule.AnalysisProvider<AnalyzerProvider<? extends Analyzer>>> getAnalyzers() {
Map<String, AnalysisModule.AnalysisProvider<AnalyzerProvider<? extends Analyzer>>> extra = new HashMap<>();
extra.put("ik_smart", IkAnalyzerProvider::getIkSmartAnalyzerProvider);
extra.put("ik_max_word", IkAnalyzerProvider::getIkAnalyzerProvider);
return extra;
}
Elasticsearch analyzers文档
https://www.elastic.co/guide/en/elasticsearch/reference/5.5/analysis-analyzers.html