ElasticSearch简介
全文搜索属于最常见的需求,开源的 Elasticsearch(以下简称 Elastic)是目前全文搜索引擎的首选。
它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。
Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口,比如我用的就是Python。
同时Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用,即curl命令。
本文从零开始,记载一下在学习使用Elastic的心得和笔记,以及它简单的原理。
Ubuntu环境下ElasticSearch安装
首先本人环境是ubuntu18.04。
Elastic需要JAVA的环境,所以如果机器没有Java需要提前配置。我的电脑是ubuntu18.04 ,系统自带Java10的环境。
ubuntu检测 java环境: 在Terminate(终端)键入: java -version
显示
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)
表示java环境已经配好。
然后直接去ElasticSearch官网下载对应版本。
推荐不要下最新的,因为可能好用的插件没有更新适配,或者语法修改了,最新学习资料不好找。我下载是6.2.4。
Window环境下ElasticSerach安装
win10环境下没有自带的JAVA环境,需要事先去官网下载Java1.8以上的JDK。
并注意,一定手动配置好JAVA的环境变量Java_Home
,不然ES会启动失败,配置JAVA环境变量的过程可以参考博客。
直接去ES的官网下载对应版本的ES压缩包,解压到本地后,进入bin
目录下,双击elasticsearch.bat
启动``es```
过一会浏览器打开 http://localhost:9200/ ,然后显示Json文件表示启动成功。
elasticsearch-head管理工具安装(不推荐)
服了,参考博客搞了一晚上(实验室垃圾网速20kb/s),安装过程很顺利。但我遇到localhost:9200
显示总是连接不上,尝试博客1,博客2等各种方法,装了卸,未果,浪费一晚上,弃疗保平安,换下面Kibana一次就成功!
唯一值得尝试elasticsearch-head的理由可能是它使用界面匹配了中文…(暴露英语差)。
Kibana 管理工具安装(推荐)
Kibana 是一个开源分析和可视化平台,旨在可视化操作 Elasticsearch 。Kibana可以用来搜索,查看和与存储在 Elasticsearch 索引中的数据进行交互。可以轻松地进行高级数据分析,并可在各种图表,表格和地图中显示数据。
Kibana 可以轻松理解海量数据。其简单的基于浏览器的界面使您能够快速创建和共享动态仪表板,实时显示 Elasticsearch 查询的更改。
安装Kibana简单快速。您可以安装 Kibana ,并在几分钟内开始探索您的 Elasticsearch 索引 - 不需要代码,也不需要需额外的基础架构。
Ubuntu 安装过程:
去官网 下载对应ElastiSearch的版本。 我推荐下载.tar格式,然后解压到本地。
这时候可以选择先配置/config/kibana.yml
文件。
sudo gedit kibana.yml
server.port: 5601 (默认) //kibana端口
server.host: ip (默认localhost) //服务的ip
server.name: //kibana实例名称
elasticsearch.url: //elasticsearch地址,默认http://localhost:9200
保存之后,在/bin/
文件里,启动Kibana: ./kibana
然后浏览器键入localhost:5601
Window安装过程
同样去官网找到对应版本的Kibana下载页面。
安装解压后,双击运行\bin\目录下 kibana.bat
即可。
Ik分词工具安装
首先安装分词器IK,当然你也可以安装别的。
在IK的官方github找到对应ES version.
我的ES是6.2.4,推荐使命令行在线下载方式:
进到你的elasticsearch目录里,输入:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip
这里面6.2.4换成你的es版本对应的Ik版本。
下载完后,重新启动elasticsearch,Ik即自动运行。
然后,新建一个 Index,指定需要分词的字段。这一步根据数据结构而异,下面的命令只针对本文。基本上,凡是需要搜索的中文字段,都要单独设置一下。
curl -H "Content-type:application/json" -X PUT 'localhost:9200/accounts' -d '{
"mappings": {
"person": {
"properties": {
"user": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"desc": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}
}
}'
上面新建一个指定的index命令中,analyzer是字段文本的分词器,search_analyzer是搜索词的分词器。ik_max_word分词器是插件ik提供的,可以对文本进行最大数量的分词。
curl -H "Content-type:application/json" -X PUT 'localhost:9200/accounts/person/1' -d '
{
"user": "张三",
"title": "工程师",
"desc": "数据库管理"
}'