Centos7.5安装ES+可视化界面+同步MySQL数据
目录
- ES简介:
- Centos下安装ES
- ES可视化界面安装
- docker后台运行ElasticHD
- ElasticSearch 基本查询语法
- 5.1 基本搜索
- 5.2 Group BY
- 5.3 Distinct Count
- 5.4 全文搜索
- 5.5 match查询
- 5.6 通配符查询
- 5.7 范围查询
- 5.8 正则表达式查询
- 同步MySQL数据至ES
1. ES简介:
简单而言,ES(Elasticsearch)是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎。
可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发动机。
总之一个字:快
为什么这么快?因为它基于的是Lucene倒排序,具体的细节请看:传送门以及传送门
2. Centos下安装ES
我已经替大家下载好啦:
链接:https://pan.baidu.com/s/1hds_ArOHaOKz4SvcudJYdQ
提取码:3g3c
安装之前还要安装JDK,没有安装JDK的可以用yum安装JDK
yum install -y jdk1.8-*
解压
unzip elasticsearch-7.6.1-linux-x86_64.tar
添加用户,因为ES不能使用ROOT启动,至于为啥:
这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,
建议创建一个单独的用户用来运行ElasticSearch
groupadd ela 创建ela组
useradd -g ela ela 创建ela用户,并且加入ela组
passwd ela 为ela用户设定登录密码
授权
chown -R ela.ela +你的安装目录,可以用pwd查看
配置yml文件
总共需要改动三个地方:cluster. initial master nodes :[“node -1” ]//加入集群,都则将报错
network.host: 192.168.0.3 //一定要改成自己的内网IP地址,否则外部无法访问,亲测!
http.port=9200//开启端口分配给用户内存
vim /etc/security/limits.conf
加入所示字样
或者:
ela hard nofile 65536
ela soft nofile 65536
继续:
vim /etc/sysctl.conf
添加:
vm.max_map_count=262144
准备工作完成,启动es
切换用户到elasu ela
//进入到启动文件目录下
cd /opt/elasticsearch-6.4.0/bin/
//启动(前台启动) ./elasticsearch -d 后台启动
./elasticsearch关闭防火墙、查看端口9200
- 启动成功
3. ES可视化界面安装
推荐使用ElasticHD,整齐简单,还有诸多小工具
下载:
wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip
解压:
unzip elasticHD_linux_amd64.zip
授权
chmod 0777 ElasticHD
或者
chown -R root ElasticHD启动
exec ./ElasticHD -p 127.0.0.1:9800
如果运行提示 exec: "xdg-open": executable file not found in $PATH
报错
因为找不到xdg-open命令,安装xdg-utils之后命令就可以使用了.
yum install xdg-utils -y
再次执行
./ElasticHD -p 127.0.0.1:9800
提示如下,表示已经运行成功
To view elasticHD console open http://127.0.0.1:9800 in browser
xdg-open: no method available for opening 'http://127.0.0.1:9800'
exit status 3
因为我是在服务器部署,在本地打ip+端口访问一直访问不了。怀疑是不是有ip访问限制
改成
./ElasticHD -p 0.0.0.0:9800
4. docker后台运行ElasticHD
上述方式能成功运行ElasticHD,但是会一直在前台占用,我们可以采用docker的方式在后台运行,方法很简单,只需两步,这也就是docker的魅力所在吧!
先看一下docker改为阿里云镜像吧!
登录阿里云 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,会获取专属的镜像地址
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json
来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
“registry-mirrors”: [“https://wo6ssm92.mirror.aliyuncs.com“]
}EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
ok!
docker pull containerize/elastichd
//-d的意思就是后台运行
docker run -d -p 9800:9800 containerize/elastichd
完美!
5. ElasticSearch 基本查询语法
5.1 基本搜索
{
"query": {
"bool": {
"must": [
{
"match_all": {
}
}
]
}
},
"from": 0,
"size": 1
}
5.2 Group BY
{
"query": {
"bool": {
"must": [
{
"match_all": {
}
}
]
}
},
"from": 0,
"size": 0,
"aggregations": {
"mid": {
"aggregations": {
"terminal": {
"terms": {
"field": "terminal",
"size": 0
}
}
},
"terms": {
"field": "mid",
"size": "1"
}
}
}
}
5.3 Distinct Count
{
"query": {
"bool": {
"must": [
{
"match_all": {
}
}
]
}
},
"from": 0,
"size": 0,
"aggregations": {
"COUNT(distinct (mid))": {
"cardinality": {
"field": "(mid)"
}
}
}
}
5.4 全文搜索
{
"query" : {
"query_string" : {
"query" : "name:rcx"}
}
}
5.5 match查询
{
"query": {
"match": {
"title": "crime and punishment"
}
}
}
5.6 通配符查询
{
"query": {
"wildcard": {
"title": "cr?me"
}
}
}
5.7 范围查询
{
"query": {
"range": {
"year": {
"gte" :1890,
"lte":1900
}
}
}
}
5.8 正则表达式查询
{
"query": {
"regexp": {
"title": {
"value" :"cr.m[ae]",
"boost":10.0
}
}
}
}
如图所示:
6. 同步MySQL数据至ES
这里使用的是elasticsearch-jdbc,之前也尝试过阿里的canal等等,说实话感觉很麻烦,这个简单易上手。首先下载:
wget http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.4.0/elasticsearch-jdbc-2.3.4.0-dist.zip
有点慢,下载完解压就好了:
unzip elasticsearch-jdbc-2.3.4.0-dist.zip
//移动一下
mv elasticsearch-jdbc-2.3.4.0-dist.zip /usr/local/jdbc/
配置环境变量vim /etc/profile
把下面两行代码放入底部
export JDBC_HOME=/usr/local/jdbc
export ES_HOME=/usr/local/elasticsearch
使其生效
source /etc/profile //生效
创建导入脚本
#!/bin/sh
bin=$JDBC_HOME/bin
lib=$JDBC_HOME/lib
echo '{
"type" : "jdbc",
"jdbc": {
"elasticsearch.autodiscover":true,
"elasticsearch.cluster":"my-application", #簇名,对应好配置
"url":"jdbc:mysql://192.168.9.155:3306/hb", #mysql地址/端口/库名
"user":"root", #Mysql账号
"password":"", #Mysql密码
"sql":"select * form tablename", #SQL语句 .........注意的是,这里只是测试,在实际配置中需要对应好要存入文档的字段,同样表的主见id对应文档id
"elasticsearch" : {
"cluster":"my-application",
"host" : "192.168.9.155",
"port" : 9300
},
"index" : "myindex", #新的index,这里测试的是商品表,用的index是myindex,其实可以规范命名~
"type" : "mytype" #新的type,类型也可以规范命名
}
}'| java \
-cp "${lib}/*" \
-Dlog4j.configurationFile=${bin}/log4j2.xml \
org.xbib.tools.Runner \
org.xbib.tools.JDBCImporter
chmod a+x mysql-elasticsearch.sh //赋予权限或者chown -R
./mysql-elasticsearch.sh //执行脚本
测试:
curl -XGET 'http://ip地址:9200/myindex/mytype/_search?pretty'
还没有评论,来说两句吧...