记Elasticsearch安装与数据同步

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
检索分析服务 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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
Elasticsearch安装配置文件
Elasticsearch安装配置文件
19 0
|
11天前
|
Docker 容器
docker desktop安装es并连接elasticsearch-head:5
以上就是在Docker Desktop上安装Elasticsearch并连接Elasticsearch-head:5的步骤。
33 2
|
23天前
|
Linux Python
【Elasticsearch】linux使用supervisor常驻Elasticsearch,centos6.10安装 supervisor
【Elasticsearch】linux使用supervisor常驻Elasticsearch,centos6.10安装 supervisor
20 3
|
27天前
|
自然语言处理 搜索推荐
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
21 1
|
1月前
|
安全
【Elasticsearch6】安装笔记
【Elasticsearch6】安装笔记
23 2
|
1月前
|
网络协议 Java
elasticsearch7.1 安装启动报错
elasticsearch7.1 安装启动报错
24 1
|
1月前
|
自然语言处理 数据可视化 Linux
ElasticSearch安装ik分词器_使用_自定义词典
ElasticSearch安装ik分词器_使用_自定义词典
29 1
|
1月前
|
存储 自然语言处理 网络协议
【elastic search】下载安装、使用教程
【elastic search】下载安装、使用教程
31 1
|
1月前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch,帮助你快速搭建起这个强大的工具
【6月更文挑战第7天】本文档详细介绍了如何在Rocky Linux 8上安装和配置Elasticsearch,首先通过添加Elasticsearch仓库并使用yum安装。接着,配置Elasticsearch,包括修改`elasticsearch.yml`、设置内存和文件描述符,以及可选的安全设置。启动Elasticsearch后,通过验证日志和测试连接确保其正常运行。文章还列举了常见问题及解决方法,如启动失败、内存不足和网络问题。按照这些步骤,用户可以在Rocky Linux 8上成功部署Elasticsearch,为数据管理与分析提供强大支持。
57 5
|
27天前
|
Windows
Windows安装Elasticsearch 7.9.2
Windows安装Elasticsearch 7.9.2
16 0

热门文章

最新文章