一、关于ES
这个搜索引擎,实在是慕名已久。之前的公司做招聘的时候,就曾经用到了这个东西作为职位搜索。只知道很牛逼,处理大数据方便是一绝,只可惜我当时没机会学习一下。现在刚好工作要做数据分析,数十亿的数据量,和ES可否一战?
二、安装相关组件
1、关于ES的最全面的解释:
https://blog.youkuaiyun.com/laoyang360/article/details/52244917
希望大家开始学习ES之前,先看一下这篇博客,大佬写的很好,也很透彻,看完心里能有点数。
2、关于安装,网上很多教程,这里分享下需要下载的文件,方便大家下载:
链接: https://pan.baidu.com/s/1sY2yIU0DkhNzXTSpIn8DzQ 提取码: kt9u 复制这段内容后打开百度网盘手机App,操作更方便哦
包括elasticsearch
的安装程序,elasticsearch-head
安装程序,node.js
和java
安装程序等。java
安装程序在那个新建文本里面。也有参考博客贡大家参考。
3、中文分词相关
参考:https://github.com/medcl/elasticsearch-analysis-ik.git
查询形如:
GET test/_analyze
{
“analyzer”:“ik_max_word”,
“text”:“搜索引擎”
}
三、各个组件的启动
1、elasticsearch 的启动
(1)进入bin目录,点击elasticsearch.bat,稍等片刻
(2)浏览器输入:http://localhost:9200/ ,显示那堆数据就OK
2、elasticsearch-head的启动:
(1)进入elasticsearch-head的文件夹
(2)执行 npm install
(3)执行 npm run start
3、安装elasticsearch-ik
参考:https://blog.youkuaiyun.com/qq_26230421/article/details/80597144
4、安装kibana,并和elasticsearch联系起来
参考:https://blog.youkuaiyun.com/qq_26230421/article/details/80597144
使用kibana的dev tools测试ela-ik即可
启动:
(1)进入kibana的安装目录,进入Bin目录下,点击kibana.bat
(2)等cmd命令框运行完,浏览器上输入:http://localhost:5601 即可
四、ELK的测试
1、kbiana和ela链接测试:
(1)创建索引
创建索引【test_2】并为 name
字段指定 analyzer
,使用ik分词处理name
字段的构建索引以及搜索时不同处理方式
put test_2
{
"mappings":{
"_doc":{
"properties":{
"name":{
"type":"text",
"analyzer":"ik_max_word",
"search_analyzer":"ik_smart"
}
}
}
}
}
(2)测试ik分词
GET test_2/_analyze
{
"analyzer":"ik_max_word",
"text":"搜索引擎"
}
(3)添加document,构建索引 (PS:PUT的方式需指定id,使用POST方式可使用es来自动生成id)
PUT test_2/_doc/1
{
"name":"中国移动"
}
(4)批量方式构建索引(bulk)
PUT test_2/_bulk
{"index":{"_id":"2","_type":"_doc"}}
{"name":"中国联通"}
{"index":{"_id":"3","_type":"_doc"}}
{"name":"中国电信"}
(5)搜索测试
GET test_2/_search
{
"query":{
"match":{
"name":"联通"
}
}
}
引申:关于es-ik的详细使用,按照自己的需求配置扩展字典等
参考:https://www.cnblogs.com/leixingzhi7/p/6903938.html
五、ES和数据库的区别:
Elasticsearch
集群可以包含多个索引(indices
)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents
)(行),然后每个文档包含多个字段(Fields)(列)。
文档类似于我们传统数据库的行,那么我们查询传统的行数据,是通过field字段作为条件,从而在表中找到这一行。同样的,在ES中,查找文档:
$params = [
'index' => 'my_index', //ES的索引,类似于mysql的databases
'type' => 'my_type', //ES的type,类似于mysql的table
'id' => 'my_id' //ES的文档id,类似于mysql表中的id,通过id锁定一行数据
];
$response = $client->get($params);
六、其他
1、 关于es的文档(document)的理解:
https://blog.youkuaiyun.com/u014078154/article/details/79415670
这个博客有不少译文,可以看一下
2、 引申
http://www.bayescafe.com/database/elasticsearch-using-index-or-type.html (讨论ES的type和关系型数据库的databases的区别)
关于ES的基础篇,大概就是这样了。安装包我都分享到了百度网盘上,大家需要的话,可以下载一下,能很快安装好。附带的一些博客都是不错的博客,大家有时间的话,尽量都看看。
一起学习!
end