一、安装jdk
ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持。所以要先安装JAVA环境。
由于ElasticSearch 5.x 往后依赖于JDK 1.8的,所以现在我们下载JDK 1.8或者更高版本。
下载JDK1.8,下载完成后安装。
二、安装ElasticSearch
1.ElasticSearch下载地址:
https://www.elastic.co/downloads/elasticsearch
2: 配置ElasticSearch
config目录下:
- jvm.options ===> 配置JVM
- elasticsearch ===> 配置ElasticSearch 信息
例如: elasticsearch.yaml 修改端口:
http.port: 92003
3:启动ElasticSearch
in目录下 command 执行 : elasticsearch.bat
访问以下地址 : http://localhost:9200/ 表示访成功:
4: 安装ElasticSearch服务
window下提供以下GUI管理程序 可在bin目录下找到:
- elasticsearch-service-mgr.exe
- elasticsearch-service-x64.exe
elasticsearch-service.bat 是提供安装服务相关功能(本质上是一系列BAT的综合体)
# 安装 bin>elasticsearch-service.bat install # 卸载 bin>elasticsearch-service.bat remove # 开始 bin>elasticsearch-service.bat start #停止 bin>elasticsearch-service.bat stop # gui管理 bin>elasticsearch-service.bat manager
三、安装elasticsearch-head
3.1 HEAD简介
ElasticSearch-head是一个H5编写的ElasticSearch集群操作和管理工具,可以对集群进行傻瓜式操作。
- 显示集群的拓扑,并且能够执行索引和节点级别操作
- 搜索接口能够查询集群中原始json或表格格式的检索数据
- 能够快速访问并显示集群的状态
- 有一个输入窗口,允许任意调用RESTful API。这个接口包含几个选项,可以组合在一起以产生有趣的结果;
- 5.0版本之前可以通过plugin名安装,5.0之后可以独立运行。
3.2 安装HEAD
安装grunt(安装head前必须安装,已久安装请忽略)
grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.x里之后的head插件就是通过grunt启动的。因此需要安装grunt.
npm install -g grunt-cli
查看版本号 grunt -version
如果下载慢 请使用淘宝镜像: npm config set registry https://registry.npm.taobao.org
# 下载 git clone git://github.com/mobz/elasticsearch-head.git # 进入到head目录 cd elasticsearch-head #安装 head npm install # 启动head npm run start # 浏览器访问地址: http://localhost:9100/
ElasticSearch配置Head: 在ElasticSearch.yaml中配置
# 增加新的参数,这样head插件可以访问es http.cors.enabled: true http.cors.allow-origin: "*"
# 浏览器访问地址:
四、安装集成Ikanalyzer分词器
4.1 什么是分词
全文检索就是对一篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句。
全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”你们的激情是因为什么事情来的” 可能会被分词成:“你们“,”激情“,“什么事情“,”来“ 等token,这样当你搜索“你们” 或者 “激情” 都会把这句搜出来.
4.2 获取 ES-IKAnalyzer插件
https://github.com/medcl/elasticsearch-analysis-ik/releases
注意: IK的版本必须与ElasticSearch 一致
4.3 安装插件
将 ik 的压缩包解压到 ES安装目录的plugins/目录下(最好把解出的程序文件 放到新建立的目录下: ),然后重启ES。
4.4 扩展词库
扩展词典可以修改配置文件 config/IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户可以在这里配置自己的扩展字典 --> <entry key="ext_dict"></entry> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords"></entry> <!--用户可以在这里配置远程扩展字典 --> <!-- <entry key="remote_ext_dict">words_location</entry> --> <!--用户可以在这里配置远程扩展停止词字典--> <!-- <entry key="remote_ext_stopwords">words_location</entry> --> </properties>
4.5测试 IK
下列工具使用 POSTMAN 发送请求:
创建索引:
创建映射(处理规则): http://127.0.0.1:9200/iktest/_mapping
#请求体: { "properties": { "content": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } }
测试分词: http://127.0.0.1:9200/_analyze
#请求体 { "analyzer":"ik_smart", "text":"天团S.H.E昨在两厅院艺文广场举办17万人露天音乐会,3人献唱多首经典好歌,让现场粉丝听得如痴如醉" }
测试结果:
{ "tokens": [ { "token": "天", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR", "position": 0 }, { "token": "团", "start_offset": 1, "end_offset": 2, "type": "CN_CHAR", "position": 1 }, { "token": "s.h.e", "start_offset": 2, "end_offset": 7, "type": "LETTER", "position": 2 }, { "token": "昨在", "start_offset": 7, "end_offset": 9, "type": "CN_WORD", "position": 3 }, { "token": "两厅", "start_offset": 9, "end_offset": 11, "type": "CN_WORD", "position": 4 }, { "token": "院", "start_offset": 11, "end_offset": 12, "type": "CN_CHAR", "position": 5 }, { "token": "艺文", "start_offset": 12, "end_offset": 14, "type": "CN_WORD", "position": 6 }, { "token": "广场", "start_offset": 14, "end_offset": 16, "type": "CN_WORD", "position": 7 }, { "token": "举办", "start_offset": 16, "end_offset": 18, "type": "CN_WORD", "position": 8 }, { "token": "17", "start_offset": 18, "end_offset": 20, "type": "ARABIC", "position": 9 }, { "token": "万人", "start_offset": 20, "end_offset": 22, "type": "CN_WORD", "position": 10 }, { "token": "露天", "start_offset": 22, "end_offset": 24, "type": "CN_WORD", "position": 11 }, { "token": "音乐会", "start_offset": 24, "end_offset": 27, "type": "CN_WORD", "position": 12 }, { "token": "3人", "start_offset": 28, "end_offset": 30, "type": "TYPE_CQUAN", "position": 13 }, { "token": "献", "start_offset": 30, "end_offset": 31, "type": "CN_CHAR", "position": 14 }, { "token": "唱", "start_offset": 31, "end_offset": 32, "type": "CN_CHAR", "position": 15 }, { "token": "多首", "start_offset": 32, "end_offset": 34, "type": "CN_WORD", "position": 16 }, { "token": "经典", "start_offset": 34, "end_offset": 36, "type": "CN_WORD", "position": 17 }, { "token": "好歌", "start_offset": 36, "end_offset": 38, "type": "CN_WORD", "position": 18 }, { "token": "让", "start_offset": 39, "end_offset": 40, "type": "CN_CHAR", "position": 19 }, { "token": "现场", "start_offset": 40, "end_offset": 42, "type": "CN_WORD", "position": 20 }, { "token": "粉丝", "start_offset": 42, "end_offset": 44, "type": "CN_WORD", "position": 21 }, { "token": "听得", "start_offset": 44, "end_offset": 46, "type": "CN_WORD", "position": 22 }, { "token": "如痴如醉", "start_offset": 46, "end_offset": 50, "type": "CN_WORD", "position": 23 } ] }