记Elasticsearch安装与数据同步

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 记录Elasticsearch安装配置操作及Logstash数据同步
  • 公司开展电商业务,之前有开发过类似项目,并没有涉及首页搜索功能,这次鉴于首页所搜需求变动,不仅仅是搜索商品,还要搜索店铺,直播及主播,现有实现方式是直接搜索数据库,为了增加用户体验,减小数据库的压力,so改用Elasticsearch实现首页搜索功能。

Elasticsearch安装

  1. 准备elasticsearch安装包,版本选择7.6.0;官网地址
  2. 使用root用户创建es用户
useradd es

然后为es用户设置密码

passwd es
  1. 修改/etc/security/limits.conf文件 在文件末尾添加
*       hard    nofile           65536
*       soft     nofile           65536
  1. 修改/etc/security/limits.d/20-nproc.conf文件
*            soft            nproc     4096

*            hard          nproc     4096

root       soft            nproc     unlimited

在/etc/sysctl.conf文件末尾添加

vm.max_map_count = 2621441

root用户执行命令

sudo sysctl -p /etc/sysctl.conf

切换用户

su es

上传elasticsearch-7.6.0-linux-x86_64.tar.gz文件至es用户目录下

解压到当前目录

tar -zxvf elasticsearch-7.6.0-linux-x86_64.tar.gz

修改/home/es/elasticsearch-7.6.0/config/elasticsearch.yml配置文件

#这里写本机ip,
network.host: 192.168.110.191
#
# Set a custom port for HTTP:
#
#http.port: 9200

#跨域配置 网页直连使用需要该配置,否则不需要
http.cors.enabled: true
http.cors.allow-origin: "*"

安装elasticsearch-analysis-ik中文分词器;在/home/es/elasticsearch-7.6.0/config/目录下创建analysis-ik目录

cd /home/es/elasticsearch-7.6.0/config/
mkdir analysis-ik

将下载下来的中文分词器文件解压,并将config目录下的所有文件拷贝到/home/es/elasticsearch-7.6.0/config/analysis-ik目录下

在/home/es/elasticsearch-7.6.0/plugins目录下创建analysis-ik目录

cd /home/es/elasticsearch-7.6.0/plugins
mkdir analysis-ik

将分词器中除config之外的文件拷贝到/home/es/elasticsearch-7.6.0/plugins/analysis-ik目录下

启动elasticsearch服务

cd /home/es/elasticsearch-7.6.0/bin
./elasticsearch -d

浏览器访问http://192.168.110.191:9200/出现如下页面则服务启动成功

{
  "name" : "eshost",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "muEaR2aHT6uT_F1lop84Lg",
  "version" : {
    "number" : "7.6.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    "build_date" : "2020-02-06T00:09:00.449973Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

数据同步工具Logstash;注意:一定要保证版本一致

cd /home/es/
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.6.0.zip
unzip logstash-7.6.0.zip
cd logstash-7.6.0
mkdir myconfig
cd myconfig

在此目录下需要创建mysql.conf文件以及要执行的sql文件,以及数据库驱动jar包,示例(此示例为多表同步):

-rw-rw-r--. 1 es es      23 Jun 22 14:08 commodity.sql
-rw-rw-r--. 1 es es      24 Jun 23 10:35 instructor.sql
-rw-rw-r--. 1 es es      18 Jun 23 10:36 live.sql
-rw-rw-r--. 1 es es    4658 Jun 23 10:50 mysql.conf
-rw-rw-r--. 1 es es 2018353 May 28 11:25 mysql-connector-java-8.0.9-rc.jar
-rw-rw-r--. 1 es es      24 Jun 23 10:36 user_store.sql

sql文件中的内容为

select * from commodity

mysql.conf文件中的内容为

input {
    stdin {
    }
    jdbc {
      # mysql数据库连接
      jdbc_connection_string => "jdbc:mysql://192.168.110.191:3306/platform?allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"
      # mysqly用户名和密码
      jdbc_user => "xxx"
      jdbc_password => "xxxx"
      # 驱动配置
      jdbc_driver_library => "/home/es/logstash-7.6.0/myconfig/mysql-connector-java-8.0.9-rc.jar"
      # 驱动类名
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行指定的sql文件
      statement_filepath => "/home/es/logstash-7.6.0/myconfig/commodity.sql"
      # 设置监听 各字段含义 分 时 天 月  年 ,默认全部为*代表含义:每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "commodity"
    }
        jdbc {
      # mysql数据库连接
      jdbc_connection_string => "jdbc:mysql://192.168.110.191:3306/platform?allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"
      # mysqly用户名和密码
      jdbc_user => "xxxx"
      jdbc_password => "xxxx"
      # 驱动配置
      jdbc_driver_library => "/home/es/logstash-7.6.0/myconfig/mysql-connector-java-8.0.9-rc.jar"
      # 驱动类名
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行指定的sql文件
      statement_filepath => "/home/es/logstash-7.6.0/myconfig/instructor.sql"
      # 设置监听 各字段含义 分 时 天 月  年 ,默认全部为*代表含义:每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "instructor"
    }
        jdbc {
      # mysql数据库连接
      jdbc_connection_string => "jdbc:mysql://192.168.110.191:3306/platform?allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"
      # mysqly用户名和密码
      jdbc_user => "xxxx"
      jdbc_password => "xxxx"
      # 驱动配置
      jdbc_driver_library => "/home/es/logstash-7.6.0/myconfig/mysql-connector-java-8.0.9-rc.jar"
      # 驱动类名
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行指定的sql文件
      statement_filepath => "/home/es/logstash-7.6.0/myconfig/live.sql"
      # 设置监听 各字段含义 分 时 天 月  年 ,默认全部为*代表含义:每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "live"
    }
        jdbc {
      # mysql数据库连接
      jdbc_connection_string => "jdbc:mysql://192.168.110.191:3306/platform?allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false"
      # mysqly用户名和密码
      jdbc_user => "xxxx"
      jdbc_password => "xxxx"
      # 驱动配置
      jdbc_driver_library => "/home/es/logstash-7.6.0/myconfig/mysql-connector-java-8.0.9-rc.jar"
      # 驱动类名
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行指定的sql文件
      statement_filepath => "/home/es/logstash-7.6.0/myconfig/user_store.sql"
      # 设置监听 各字段含义 分 时 天 月  年 ,默认全部为*代表含义:每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "user_store"
    }
}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

output {  
        if [type]=="user_store" {
                elasticsearch {
                #ESIP地址与端口
                        hosts => "192.168.110.191:9200"
                        #ES索引名称(自己定义的)
                        index => "user_store"
                        #自增ID编号
                        #document_id => "%{id}"
                }
        }
        if [type]=="live" {
                elasticsearch {
                #ESIP地址与端口
                        hosts => "192.168.110.191:9200"
                        #ES索引名称(自己定义的)
                        index => "live"
                        #自增ID编号
                        #document_id => "%{id}"
                }
        }
        if [type]=="instructor" {
                elasticsearch {
                #ESIP地址与端口
                        hosts => "192.168.110.191:9200"
                        #ES索引名称(自己定义的)
                        index => "instructor"
                        #自增ID编号
                        #document_id => "%{id}"
                }
        }
        if [type]=="commodity" {
                elasticsearch {
                #ESIP地址与端口
                        hosts => "192.168.110.191:9200"
                        #ES索引名称(自己定义的)
                        index => "commodity"
                        #自增ID编号
                        #document_id => "%{id}"
                }
        }
}

启动Logstash

cd /home/es/logstash-7.6.0/bin
./logstash -f ../myconfig/mysql.conf &

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
16天前
|
数据可视化 索引
elasticsearch head、kibana 安装和使用
elasticsearch head、kibana 安装和使用
|
28天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
113 0
|
2月前
|
存储 监控 搜索推荐
在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——安装篇(一)
在生产环境中部署Elasticsearch:最佳实践和故障排除技巧——安装篇(一)
|
4月前
|
SQL 分布式计算 Oracle
数据同步工具DataX的安装
数据同步工具DataX的安装
425 0
|
4月前
ElasticSearch-Head浏览器插件离线安装
ElasticSearch-Head浏览器插件离线安装
91 0
|
15天前
|
JSON Unix Linux
Elasticsearch如何安装
Elasticsearch如何安装
|
3月前
|
前端开发 安全 Ubuntu
Elasticsearch安装和配置
Elasticsearch安装和配置
116 0
|
4月前
|
数据可视化 Docker 容器
elasticsearch 安装(一)
elasticsearch 安装
160 0
|
26天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
76 0
|
1月前
|
监控 安全 Java
ElasticSearch在Windows上的下载与安装
ElasticSearch在Windows上的下载与安装

热门文章

最新文章