0


Elasticsearch的安装及使用,这一篇就够了

学习Elasticsearch这一篇就够了


一、ES介绍

  Elasticsearch是一个基于Apache Lucene的开源搜索引擎。Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 特点: 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎–做不规则查询 可以扩展到上百台服务器,处理PB级结构化或非结构化数据 Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

二、单体ES安装

1.ES下载

ES官网:ElasticSearch官网

2.安装

1.上传后解压

在这里插入图片描述
解压命令:

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

移动解压后的文件到/usr/local/目录下:

mv elasticsearch-7.4.2 /usr/local/

在这里插入图片描述

2.ES目录介绍

在这里插入图片描述

  • bin:可执行文件在里面,运行es的命令就在这个里面,包 含了一些脚本文件等
  • config:配置文件目录
  • jdk:java环境
  • lib:依赖的jar,类库
  • logs:日志文件
  • modules:es相关的模块
  • plugins:可以自己开发的插件
  • data:这个目录没有,自己新建一下,后面要用->mkdir data,这个作为索引目录

3.修改核心配置文件elasticearch.yml

  • 修改集群名称,默认是elasticsearch,虽然目前是单机,但 是也会有默认的
  • 为当前的s节点取个名称,名称随意,如果在集群环境中, 都要有相应的名字vim config/elasticsearch.yml 在这里插入图片描述
  • 修改data数据保存地址
  • 修改日志数据保存地址 /usr/local/elasticsearch-7.4.2/data`````` /usr/local/elasticsearch-7.4.2/logs在这里插入图片描述
  • 绑定es网络ip,原理同redis
  • 默认端口号,可以自定义修改
  • 集群节点,名字可以先改成之前的那个节点名称在这里插入图片描述

4.修改JVM参数

在这里插入图片描述
在这里插入图片描述

默认xms和xmx都是1g,虚拟机内存没这么大,修改一下即可,线上环境内存大可以不修改!

5.添加用户

ES不允许使用root操作es,需要添加用户,操作如下:

#添加用户
useradd esuser
#授权
chown -R esuser:esuser /usr/local/elasticsearch-7.4.2
su esuser
whoami

6.启动ES

./elasticsearch

如果出现如下错误:
在这里插入图片描述
那么需要切换到oot用户下去修改配置如下:

vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

在这里插入图片描述

vim /etc/sysctl.conf 
vm.max_map_count=262145

在这里插入图片描述

别忘记

sysctl -p

刷新一下
最后再次启动OK

7.测试

访问你的虚拟机ip+端口号9200,如下则表示OK
在这里插入图片描述
停止es
如果是前台启动,直接ctrl+c就可以停止
后台启动:

./elasticsearch -d

停止杀进程:

jps

kill+进程号
在这里插入图片描述

端口号意义

  • 9200:Http协议,用于外部通讯
  • 9300:Tcp协议,ES集群之间是通过9300通讯

三、Elasticsearch 集群构建

1. 先进行克隆三台服务器

在这里插入图片描述

2. 搭建es集群

环境准备

HOSTNAMEIPes01192.168.92.110es02192.168.92.111es03192.168.92.112

2.1 分别对三台服务器(es01, es02, es03 )做如下操作

进入es的data目录下, 删除nodes数据

cd /usr/local/elasticsearch-7.4.2/data
rm nodes/ -rf

在这里插入图片描述

2.2 操作三台服务器(es01, es02, es03 节点)

操作config文件, 修改ES核心配置文件中的cluster的name值为同一个

  1. 即修改cluster.name为: my-application
  2. 分别修改 node.name为:es-node1, es-node2, es-node3vim /usr/local/elasticsearch-7.4.2/config/elasticsearch.yml在这里插入图片描述
  3. 三台都开启master, data master: 表示在未来可以成为master节点 data: 用来存储文档数据
node.master: true
node.data: true
  1. 三台都进行配置节点信息.discovery.seed_hosts: ["192.168.92.110", "192.168.92.111","192.168.92.112"]在这里插入图片描述

2.3 查看配置信息

  1. cd /usr/local/elasticsearch-7.4.2/config/
  2. more elasticsearch.yml | grep ^[^#]在这里插入图片描述

2.4 启动ES集群

分别进入用户 esuser

su esuser
./usr/local/elasticsearch-7.4.2/bin/elasticsearch

在这里插入图片描述

2.5 测试ES集群

在这里插入图片描述

四、ik中文分词器

安装ik

ik中文分词器和ES版本需要一致,安装方法一样

1. 安装ik中文分词器(6.4.3版本)

上传zip文件到我们的服务器
在这里插入图片描述

2. 解压并放在elasticsearch的plugins的ik文件夹下

yum install -y unzip zip

安装zip工具,已安装可跳过

unzip elasticsearch-analysis-ik-6.4.3.zip -d /usr/local/elasticsearch-6.4.3/plugins/ik

在这里插入图片描述

3.进入ES的ik目录下

cd /usr/local/elasticsearch-6.4.3/plugins/ik

4.重新启动ES

jps
kill ***
su esuser
cd /usr/local/elasticsearch-6.4.3/bin
./elasticsearch -d

使用ik中文分词器

2.1 分词器: ik_max_word

此分词器会将文本进行最细粒度的拆分, 比如将"中华人民共和国国歌"
拆分为"中华人民共和国",“中华人民”,“中华”,“华人”,“人民共和国”,“人民”,“人”,“民”,“共和国”,“共和”,“和”,“国国”,“国歌”
在这里插入图片描述

2.1 分词器: ik_smart

此分词器会将文本进行最粗粒度的拆分.

在这里插入图片描述

五、logstash 数据同步

1. logstash 简介

Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。(当然,最喜欢的是Elasticsearch)

数据采集: 可以从数据库中采集到 Elasticsearch
以 自增id(不建议, 会无法识别修改的数据) 或者 update_time 作为同步的边界
可以通过新版 Elasticsearch 所集成的插件 logstash-input-jdbc 直接使用
使用logstash时候要与 Elasticsearch 的版本号保持一致

2. logstash 安装

2.1 (前提是安装好jdk)上传logstash, mysql驱动

在这里插入图片描述

2.2 logstash 同步配置

  1. 解压logstash: tar -zxvf logstash-6.4.3.tar.gz
  2. 移动 logstash: mv logstash-6.4.3 /usr/local/
  3. 进入该目录: cd /usr/local/logstash-6.4.3/
  4. 创建文件夹sync, 将相关的同步配置放在该文件夹下: mkdir sync
  5. 创建配置文件(后面会进行编辑, 这里进行创建): vim logstash-db-sync.conf![在这里插入图片描述](https://img-blog.csdnimg.cn/ea250304a4534c6a91697eb0ddcaf644.png
  6. 将数据库驱动进行拷贝到当前的目录下: cp /home/software/mysql-connector-java-5.1.41.jar .在这里插入图片描述
  7. 创建sql存储文件: foodie-items.sqlSELECT i.id AS itemId, i.item_name AS itemName, i.sell_counts AS sellCounts, ii.url AS imgUrl, tempSpec.price_discount AS price, i.updated_time AS updated_timeFROM items iLEFTJOIN items_img iiON i.id = ii.item_idLEFTJOIN(SELECT item_id,MIN(price_discount) as price_discount FROM items_spec GROUPBY item_id ) tempSpecON i.id = tempSpec.item_idWHERE ii.is_main =1AND i.updated_time >=:sql_last_value
  8. 进行修改配置文件 logstash-db-sync.conf: vim logstash-db-sync.conf
input {
    jdbc {
        # 设置 MySql/MariaDB 数据库url以及数据库名称
        jdbc_connection_string =>"jdbc:mysql://192.168.92.110:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"
        # 用户名和密码
        jdbc_user =>"root"
        jdbc_password =>"root"
        # 数据库驱动所在位置,可以是绝对路径或者相对路径
        jdbc_driver_library =>"/usr/local/logstash-6.4.3/sync/mysql-connector-java-5.1.41.jar"
        # 驱动类名
        jdbc_driver_class =>"com.mysql.jdbc.Driver"
        # 开启分页
        jdbc_paging_enabled =>"true"
        # 分页每页数量,可以自定义
        jdbc_page_size =>"1000"
        # 执行的sql文件路径
        statement_filepath =>"/usr/local/logstash-6.4.3/sync/foodie-items.sql"
        # 设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务
        schedule =>"* * * * *"
        # 索引类型
        type =>"_doc"
        # 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件
        use_column_value =>true
        # 记录上一次追踪的结果值
        last_run_metadata_path =>"/usr/local/logstash-6.4.3/sync/track_time"
        # 如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间
        tracking_column =>"updated_time"
        # tracking_column 对应字段的类型
        tracking_column_type =>"timestamp"
        # 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录
        clean_run =>false
        # 数据库字段名称大写转小写
        lowercase_column_names =>false}}
output {
    elasticsearch {
        # es地址
        hosts =>["192.168.92.110:9200"]
        # 同步的索引名
        index =>"foodie-items"
        # 设置_docID和数据库中的id保持相同
        document_id =>"%{id}"
        # document_id =>"%{itemId}"}
    # 日志输出
    stdout {
        codec => json_lines
    }}

2.3 启动logstash

进入bin目录:

cd /usr/local/logstash-6.4.3/bin

启动logstash:

./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf

后台启动:

nohup ./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf > logstash.log 2>&1 &

在这里插入图片描述

在这里插入图片描述

logstash 只对新增和修改的数据可以进行同步, 而对于数据库中删除的数据是不会进行同步到es中的.
所以数据库中删除的数据, 它在es中只是通过更新时间的方式进行逻辑上的删除.

六.安装 ElasticSearch 可视化插件: es-head

1. 下载并且解压es-header

es-header下载
在这里插入图片描述

2. 安装 node.js

node.js下载
下载完安装即可
在这里插入图片描述

3. 在node.js中执行以下命令

进入es-header目录(在目录按shift右击,打开powershell窗口)

npm install

在这里插入图片描述

npm run start

在这里插入图片描述

4. 设置跨域

访问http://localhost:9100/ 发现跨域
在这里插入图片描述

  • 进入 es 核心配置文件, elasticsearch.yml进行添加跨域配置如下
http.cors.enabled: true
http.cors.allow-origin: "*"

在这里插入图片描述

5. 测试

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_38055805/article/details/128953343
版权归原作者 哒不死的小小强 所有, 如有侵权,请联系我们删除。

“Elasticsearch的安装及使用,这一篇就够了”的评论:

还没有评论