最近做的项目中用到了ElasticSearch来实现亿级数据的全文搜索与分析,整理归纳了一些关于ElasticSearch的实操笔记,现在就把这些笔记一一分享出来,希望对大家能有所帮助。
Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。
Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是一套适用于数据采集、扩充、存储、分析和可视化的免费开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana)
简单来说,利用ElasticSearch可以方便快捷地实现全文检索的功能,并且在大数据量的情况下,它的效率比一般的数据库要高很多。
具体到它的实现原理,这里就不过多赘述了,网上有很多分析的博客,大家自行搜索即可。下面我就来介绍一下es的环境搭建。
实现基于ElasticSearch的全文搜索,除了需要部署核心的ElasticSearch服务,还需要安装如下的几个插件:
1.1、kibana:提供可视化的查询等操作;
1.2、elasticsearch-head-master:创建、管理索引
1.3、logStash:动态采集、转换、传输数据
1.4、ik分词器:提供中文分词功能
这里需要注意的是所有的插件都需要安装与ElasticSearch相同的版本,否则有可能无法使用。
下面是es服务以及插件的下载链接:
2.1、es服务:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
2.2、kibana:https://www.elastic.co/cn/downloads/past-releases#kibana
2.3、elasticsearch-head-master:https://github.com/mobz/elasticsearch-head
2.4、logstash:https://www.elastic.co/cn/downloads/past-releases#logstash
2.5、ik分词器:https://github.com/medcl/elasticsearch-analysis-ik/releases
打包下载链接:https://pan.baidu.com/s/16P-ufZwzVnvhx3WpoGAntQ 提取码:bsa2
ElasticSearch是基于java进行开发的,因此想要运行es,必须先配置java环境,网上有很多例子,这里就不一一赘述了;
elasticsearch-head-master是一个基于node的项目,因此npm、node也是必须要安装的。
4.1、ElasticSearch、Kibana
ElasticSearch、Kibana的运行很简单,直接在bin下找到相应的elasticsearch.bat和kibana.bat,双击运行即可;
es运行成功:
在浏览器中输入:localhost:8080,即可看到es服务的相关信息:
Kibana运行成功:
在浏览器中输入localhost:5601,即可看到kibana的主页
4.2、elasticsearch-head-master
在命令行模式下,切换到elasticsearch-head-master,执行npm run start 启动;
注意:elasticsearch-head连接es时会出现跨域问题,需要在es中设置参数,解决跨域:
在es的config目录下打开el.yml,在文件末尾添加:
http.cors.enabled: true
http.cors.allow-origin: "*"
在浏览器中输入localhost:9100,即可看到es-head的主页:
4.3、ik分词器:
ik分词器属于es的插件,而es的插件都是放置在plugin文件目录下的,因此我们需要在plugins下新建ik目录,将下载下来的ik压缩包中的所有文件拷贝到ik下:
重启es,如果可以在控制台中看到如下内容,证明插件安装成功:
4.4、logstash:
logstash在这里主要用作数据传输,日后会专门写一篇博客来介绍如何实现将mysql的数据通过logstash导入到es中。
好了,将这些插件运行完成后,我们可以先简单地通过es-head创建一个索引,并使用kibana的调试工具,获取一下索引信息:
在es-head中,选择索引->新建索引->弹出框中输入索引名称,看到下图的返回值,即代表索引创建成功:
在kibana中查看索引信息:
点击左侧菜单栏的“扳手”图标,在左侧输入框中输入“GET /test/”,即可在右侧输出中看到数据库的基本信息,至此我们的环境就搭建完成啦!