Centos7.5安装ES+可视化界面+同步MySQL数据

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-*
  1. 解压
unzip elasticsearch-7.6.1-linux-x86_64.tar
  1. 添加用户,因为ES不能使用ROOT启动,至于为啥:

这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,
建议创建一个单独的用户用来运行ElasticSearch

			groupadd ela 创建ela组
			useradd -g ela ela 创建ela用户,并且加入ela组
			passwd ela 为ela用户设定登录密码
  1. 授权
chown -R ela.ela +你的安装目录,可以用pwd查看
  1. 配置yml文件
    总共需要改动三个地方:
cluster. initial master nodes :["node -1" ]//加入集群,都则将报错
network.host: 192.168.0.3 //一定要改成自己的内网IP地址,否则外部无法访问,亲测!
http.port=9200//开启端口
  1. 分配给用户内存
vim /etc/security/limits.conf

加入所示字样
在这里插入图片描述
或者:

ela hard nofile 65536
ela soft nofile 65536

继续:

vim /etc/sysctl.conf

添加:

vm.max_map_count=262144
  1. 准备工作完成,启动es
    切换用户到ela
su ela
//进入到启动文件目录下
cd /opt/elasticsearch-6.4.0/bin/
//启动(前台启动) ./elasticsearch -d 后台启动
./elasticsearch 
  1. 关闭防火墙、查看端口9200
  2. 启动成功
    在这里插入图片描述

3. ES可视化界面安装

推荐使用ElasticHD,整齐简单,还有诸多小工具
在这里插入图片描述

  1. 下载:
wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip
  1. 解压:
unzip elasticHD_linux_amd64.zip
  1. 授权
chmod 0777 ElasticHD
或者
chown -R root ElasticHD
  1. 启动
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来使用加速器

  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://wo6ssm92.mirror.aliyuncs.com"]
}
  1. EOF
  2. sudo systemctl daemon-reload
  3. 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'    
发布了21 篇原创文章 · 获赞 106 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/AAAhxz/article/details/104799053
今日推荐