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

目录

          1. ES简介:
          1. Centos下安装ES
          1. ES可视化界面安装
          1. docker后台运行ElasticHD
          1. ElasticSearch 基本查询语法
          • 5.1 基本搜索
          • 5.2 Group BY
          • 5.3 Distinct Count
          • 5.4 全文搜索
          • 5.5 match查询
          • 5.6 通配符查询
          • 5.7 范围查询
          • 5.8 正则表达式查询
          1. 同步MySQL数据至ES

1. ES简介:

简单而言,ES(Elasticsearch)是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎。
可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发动机。
总之一个字:
为什么这么快?因为它基于的是Lucene倒排序,具体的细节请看:传送门以及传送门

2. Centos下安装ES

我已经替大家下载好啦:

  1. 链接:https://pan.baidu.com/s/1hds_ArOHaOKz4SvcudJYdQ
  2. 提取码:3g3c

安装之前还要安装JDK,没有安装JDK的可以用yum安装JDK

  1. yum install -y jdk1.8-*
  1. 解压

    unzip elasticsearch-7.6.1-linux-x86_64.tar

  2. 添加用户,因为ES不能使用ROOT启动,至于为啥:

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

  1. groupadd ela 创建ela
  2. useradd -g ela ela 创建ela用户,并且加入ela
  3. passwd ela ela用户设定登录密码
  1. 授权

    chown -R ela.ela +你的安装目录,可以用pwd查看

  2. 配置yml文件
    总共需要改动三个地方:

    cluster. initial master nodes :[“node -1” ]//加入集群,都则将报错
    network.host: 192.168.0.3 //一定要改成自己的内网IP地址,否则外部无法访问,亲测!
    http.port=9200//开启端口

  3. 分配给用户内存

    vim /etc/security/limits.conf

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

  1. ela hard nofile 65536
  2. ela soft nofile 65536

继续:

  1. vim /etc/sysctl.conf

添加:

  1. vm.max_map_count=262144
  1. 准备工作完成,启动es
    切换用户到ela

    su ela
    //进入到启动文件目录下
    cd /opt/elasticsearch-6.4.0/bin/
    //启动(前台启动) ./elasticsearch -d 后台启动
    ./elasticsearch

  2. 关闭防火墙、查看端口9200

  3. 启动成功
    在这里插入图片描述

3. ES可视化界面安装

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

  1. 下载:

    wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip

  2. 解压:

    unzip elasticHD_linux_amd64.zip

  3. 授权

    chmod 0777 ElasticHD
    或者
    chown -R root ElasticHD

  4. 启动

    exec ./ElasticHD -p 127.0.0.1:9800

如果运行提示 exec: "xdg-open": executable file not found in $PATH 报错

因为找不到xdg-open命令,安装xdg-utils之后命令就可以使用了.

  1. yum install xdg-utils -y

再次执行

  1. ./ElasticHD -p 127.0.0.1:9800

提示如下,表示已经运行成功

  1. To view elasticHD console open http://127.0.0.1:9800 in browser
  2. xdg-open: no method available for opening 'http://127.0.0.1:9800'
  3. exit status 3

因为我是在服务器部署,在本地打ip+端口访问一直访问不了。怀疑是不是有ip访问限制

改成

  1. ./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'
  3. {

    “registry-mirrors”: [“https://wo6ssm92.mirror.aliyuncs.com“]
    }

  4. EOF

  5. sudo systemctl daemon-reload
  6. sudo systemctl restart docker

ok!

  1. docker pull containerize/elastichd
  2. //-d的意思就是后台运行
  3. docker run -d -p 9800:9800 containerize/elastichd

在这里插入图片描述
完美!

5. ElasticSearch 基本查询语法

5.1 基本搜索
  1. {
  2. "query": {
  3. "bool": {
  4. "must": [
  5. {
  6. "match_all": {
  7. }
  8. }
  9. ]
  10. }
  11. },
  12. "from": 0,
  13. "size": 1
  14. }
5.2 Group BY
  1. {
  2. "query": {
  3. "bool": {
  4. "must": [
  5. {
  6. "match_all": {
  7. }
  8. }
  9. ]
  10. }
  11. },
  12. "from": 0,
  13. "size": 0,
  14. "aggregations": {
  15. "mid": {
  16. "aggregations": {
  17. "terminal": {
  18. "terms": {
  19. "field": "terminal",
  20. "size": 0
  21. }
  22. }
  23. },
  24. "terms": {
  25. "field": "mid",
  26. "size": "1"
  27. }
  28. }
  29. }
  30. }
5.3 Distinct Count
  1. {
  2. "query": {
  3. "bool": {
  4. "must": [
  5. {
  6. "match_all": {
  7. }
  8. }
  9. ]
  10. }
  11. },
  12. "from": 0,
  13. "size": 0,
  14. "aggregations": {
  15. "COUNT(distinct (mid))": {
  16. "cardinality": {
  17. "field": "(mid)"
  18. }
  19. }
  20. }
  21. }
5.4 全文搜索
  1. {
  2. "query" : {
  3. "query_string" : {
  4. "query" : "name:rcx"}
  5. }
  6. }
5.5 match查询
  1. {
  2. "query": {
  3. "match": {
  4. "title": "crime and punishment"
  5. }
  6. }
  7. }
5.6 通配符查询
  1. {
  2. "query": {
  3. "wildcard": {
  4. "title": "cr?me"
  5. }
  6. }
  7. }
5.7 范围查询
  1. {
  2. "query": {
  3. "range": {
  4. "year": {
  5. "gte" :1890,
  6. "lte":1900
  7. }
  8. }
  9. }
  10. }
5.8 正则表达式查询
  1. {
  2. "query": {
  3. "regexp": {
  4. "title": {
  5. "value" :"cr.m[ae]",
  6. "boost":10.0
  7. }
  8. }
  9. }
  10. }

如图所示:
在这里插入图片描述

6. 同步MySQL数据至ES

这里使用的是elasticsearch-jdbc,之前也尝试过阿里的canal等等,说实话感觉很麻烦,这个简单易上手。首先下载:

  1. wget http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.4.0/elasticsearch-jdbc-2.3.4.0-dist.zip

在这里插入图片描述
有点慢,下载完解压就好了:

  1. unzip elasticsearch-jdbc-2.3.4.0-dist.zip
  2. //移动一下
  3. mv elasticsearch-jdbc-2.3.4.0-dist.zip /usr/local/jdbc/

配置环境变量
vim /etc/profile
把下面两行代码放入底部

  1. export JDBC_HOME=/usr/local/jdbc
  2. export ES_HOME=/usr/local/elasticsearch

使其生效

  1. source /etc/profile //生效

创建导入脚本

  1. #!/bin/sh
  2. bin=$JDBC_HOME/bin
  3. lib=$JDBC_HOME/lib
  4. echo '{
  5. "type" : "jdbc",
  6. "jdbc": {
  7.       "elasticsearch.autodiscover":true,
  8.       "elasticsearch.cluster":"my-application", #簇名,对应好配置
  9.       "url":"jdbc:mysql://192.168.9.155:3306/hb", #mysql地址/端口/库名
  10.       "user":"root", #Mysql账号
  11.       "password":"", #Mysql密码
  12.       "sql":"select * form tablename", #SQL语句 .........注意的是,这里只是测试,在实际配置中需要对应好要存入文档的字段,同样表的主见id对应文档id
  13.       "elasticsearch" : {
  14. "cluster":"my-application",
  15.         "host" : "192.168.9.155",
  16.         "port" : 9300
  17.        },
  18.       "index" : "myindex", #新的index,这里测试的是商品表,用的index是myindex,其实可以规范命名~
  19.       "type" : "mytype" #新的type,类型也可以规范命名
  20.    }
  21. }'| java \
  22. -cp "${lib}/*" \
  23. -Dlog4j.configurationFile=${bin}/log4j2.xml \
  24. org.xbib.tools.Runner \
  25. org.xbib.tools.JDBCImporter
  26. chmod a+x mysql-elasticsearch.sh //赋予权限或者chown -R
  27. ./mysql-elasticsearch.sh //执行脚本

测试:

  1. curl -XGET 'http://ip地址:9200/myindex/mytype/_search?pretty'

发表评论

表情:
评论列表 (有 0 条评论,84人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Centos安装

    1、如何在centOS7下安装GUI图形界面        当你安装centOS7服务器版本的时候,系统默认是不会安装GUI的图形界面程序,这个需要手动安装CentOS7