Windows / Linux / Docker 安装ElasticSearch7.x单机/集群 + IK分词器

1. 前言

ElasticSearch介绍

Elasticsearch是一个基于Lucene的搜索服务器。
它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。
根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

主要应用场景
全文检索、日志收集系统(ELK)

搭建准备

ElasticSearch必须要有JDK环境,所以本文安装示例是基于已有JDK的前提下。
如未安装可参考blog进行安装:Linux配置jdk环境

2. 资料下载

当前稳定版本为:7.15.2,故选择上一个稳定版本7.14.2
历史版本下载选择地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

CSDN下载

官网下载

3. 单机搭建

Windows

  1. 解压后得到目录:elasticsearch-7.14.2

  2. 双击elasticsearch.bat启动

  3. 验证安装
    url:http://localhost:9200/
    出现下图表示成功:↓

配置IK分词器

GitHub源码地址:https://github.com/medcl/elasticsearch-analysis-ik
CSDN下载:elasticsearch-analysis-ik-7.14.2.zip
GitHub下载:elasticsearch-analysis-ik-7.14.2.zip
需注意ik与es的版本一致


1)创建ik插件目录并解压

2)重启es

Docker

使用Docker安装前提需要有Docker环境,如未安装可参考:centOs在线/离线安装docker

1. 查看docker环境

docker version

2. 拉取es镜像

docker pull elasticsearch:7.14.2


3.调整linux虚拟内存
/proc/sys/vm/max_map_count
具体作用可参考:linux参数之max_map_count
1)查看目前数量(默认65530)

cat /proc/sys/vm/max_map_count

2)调整为262144

sysctl -w vm.max_map_count=262144

4. 运行es镜像

docker run --name elasticsearch -d -e ES_JAVA_POTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.14.2

参数说明:↓
ES_JAVA_POTS=“-Xms256m -Xmx256m”:配置java内存参数
discovery.type=single-node:以单机方式启动
-p 9200:9200:映射容器中9200到宿主机的9200端口(es连接端口)
-p 9300:9300:映射容器中9300到宿主机的9300端口(es通信端口)


5. 验证启动状态

请求本地es端口

curl http://127.0.0.1:9200


6. 验证外网访问情况
浏览器请求:http://ip:9200

如无法外网访问,按下列步骤检查:↓
1)检查防火墙端口及云服务器安全组端口是否开放
2)检查es容器中配置是否为(正常默认就是):network.host: 0.0.0.0
3)检查启动时是否添加参数:-e “discovery.type=single-node”

Linux

  1. 下载/上传ElasticSearch压缩包

    [root@jszwjs56ji ~]# [root@jszwjs56ji ~]# sudo mkdir /data/elasticsearch && cd /data/elasticsearch
    # 下载压缩包
    [root@jszwjs56ji elasticsearch]# sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.2-linux-x86_64.tar.gz
    
  2. 解压并进入ElasticSearch

    [root@jszwjs56ji elasticsearch]# sudo tar -zxvf elasticsearch-7.14.2-linux-x86_64.tar.gz && cd elasticsearch-7.14.2/
    
  3. 创建esuser用户(es不允许以root用户启动)

    # 添加用户
    [root@jszwjs56ji elasticsearch-7.14.2]# sudo adduser esuser
    # 创建用户密码(需输入两次密码)
    [root@jszwjs56ji elasticsearch-7.14.2]# sudo passwd esuser
    Changing password for user esuser.
    New password:
    BAD PASSWORD: it does not contain enough DIFFERENT characters
    BAD PASSWORD: is too simple
    Retype new password:
    passwd: all authentication tokens updated successfully.
    # 赋予目录权限
    [root@jszwjs56ji elasticsearch-7.14.2]# sudo chown -R esuser ../elasticsearch-7.14.2
    # 切换到esuser用户
    [root@jszwjs56ji elasticsearch-7.14.2]# su esuser
    
  4. 启动ElasticSearch

    CentOs6.x需要额外修改elasticsearch.yml文件,添加配置:↓
    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false
    原因:system_call_filter默认为true,CentOs6.x不支持SecComp导致

    [esuser@jszwjs56ji elasticsearch-7.14.2]# ./bin/elasticsearch
    
    # 以守护进程启动
    [esuser@jszwjs56ji elasticsearch-7.14.2]# ./bin/elasticsearch -d
    
  5. 验证安装
    本地请求9200端口

    [esuser@jszwjs56ji ~]# curl 127.0.0.1:9200
    {
      "name" : "jszwjs56ji",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "nsT3ilqXSN-92Ynru1UMBQ",
      "version" : {
        "number" : "7.14.2",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "6bc13727ce758c0e943c3c21653b3da82f627f75",
        "build_date" : "2021-09-15T10:18:09.722761972Z",
        "build_snapshot" : false,
        "lucene_version" : "8.9.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    
  6. 开机自启

    # 修改rc.local文件
    [root@jszwjs56ji elasticsearch-7.14.2]# sudo vim /etc/rc.local
    
    # 新增如下两行(指向jdk8路径、elasticsearch启动脚本)
    export JAVA_HOME=/data/jdk-11.0.22/
    sh /data/elasticsearch/elasticsearch-7.14.2/bin/elasticsearch -d
    

配置IK分词器

GitHub源码地址:https://github.com/medcl/elasticsearch-analysis-ik
CSDN下载:elasticsearch-analysis-ik-7.14.2.zip
GitHub下载:elasticsearch-analysis-ik-7.14.2.zip
需注意ik与es的版本一致

配置ik分词器

一键安装

# 用户需切换为:esuser
[esuser@jsvm-hynode-011 elasticsearch-7.14.2]$ ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.2/elasticsearch-analysis-ik-7.14.2.zip

手动安装

# 创建ik目录
[esuser@jszwjs56ji elasticsearch-7.14.2]$ mkdir plugins/ik && cd plugins/ik
# 下载
[esuser@jszwjs56ji ik]$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.2/elasticsearch-analysis-ik-7.14.2.zip
# 解压
[esuser@jszwjs56ji ik]$ sudo yum install unzip -y
[esuser@jszwjs56ji ik]$ unzip elasticsearch-analysis-ik-7.14.2.zip
# 删除压缩包
[esuser@jszwjs56ji ik]$ rm -f elasticsearch-analysis-ik-7.14.2.zip
# 启动
[esuser@jszwjs56ji ik]$ cd ../../ && sh ./bin/elasticsearch -d

允许其他ip访问

ElasticSearch默认只允许127回环地址,如有需要可参考如下配置步骤
注:需切换回root用户进行如下步骤操作:su root

elasticsearch.yml

sudo vim config/elasticsearch.yml
network.host: 0.0.0.0
node.name: node-1
cluster.initial_master_nodes: ["node-1"]

sysctl.conf

sudo vim /etc/sysctl.conf
# 末尾补充
vm.max_map_count=655360

使sysctl.conf文件生效:sudo sysctl -p

limits.conf

sudo vim /etc/security/limits.conf
# es用户:esuser
esuser soft nofile 65536
esuser hard nofile 65536
* soft nofile 65536
* hard nofile 65536

上述三个文件均修改完后重启es即可,参考上述第4点:启动ElasticSearch
再次访问url:http://外网ip:9200

集群搭建(Linux)

服务器信息

服务器ip地址es端口node-name通信端口
服务器110.2.1.1979200esnode-19300
服务器210.2.1.1229200esnode-29300
服务器310.2.1.2379200esnode-39300

搭建前提
先按照上述单机搭建(Linux)方式(需配置允许其他ip访问步骤)在3台服务器上依次安装

集群配置

  1. 逐个停止启动的es
    [esuser@jsvm-hynode-011 elasticsearch-7.14.2]$ jps
    27107 Jps
    25749 Elasticsearch
    [esuser@jsvm-hynode-011 elasticsearch-7.14.2]$ kill -9 25749
    [esuser@jsvm-hynode-011 elasticsearch-7.14.2]$ jps
    27341 Jps
    
  2. 修改elasticsearch.yml文件
    vim config/elasticsearch.yml
    
    # 集群名称
    cluster.name: hyesearch
    # 允许成为主节点
    node.master: true
    # 允许存储数据
    node.data: true
    # 节点通信端口
    transport.tcp.port: 9300
    # 是否压缩传输数据
    transport.tcp.compress: true
    # 数据目录
    path.data: /data/elasticsearch/elasticsearch-7.14.2/data
    # 日志目录
    path.logs: /data/elasticsearch/elasticsearch-7.14.2/logs
    # 访问端口
    http.port: 9200
    # 集群节点host
    discovery.seed_hosts: ["10.2.1.197:9300", "10.2.1.122:9300", "10.2.1.237:9300"]
    # 集群节点名称
    cluster.initial_master_nodes: ["esnode-1", "esnode-2", "esnode-3"]
    # 跨域配置
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    # esnode-1(10.2.1.197)
    # 当前节点名称
    node.name: esnode-1
    # 回环地址
    network.host: 10.2.1.197
    
    # esnode-2(10.2.1.122)
    # 当前节点名称
    node.name: esnode-2
    # 回环地址
    network.host: 10.2.1.122
    
    # esnode-3(10.2.1.237)
    # 当前节点名称
    node.name: esnode-3
    # 回环地址
    network.host: 10.2.1.237
    
  3. 启动es集群
    # 删除历史data数据
    [esuser@jsvm-hynode-011 elasticsearch-7.14.2]$ rm -rf data/*
    # 启动
    [esuser@jsvm-hynode-011 elasticsearch-7.14.2]$ ./bin/elasticsearch -d
    
  4. 验证集群
    随意访问其中一台的webUrl:http://ip:9200/_nodes


    格式化json可以看到共有3个节点,并且成功的节点有3个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

954L

帮帮孩子把~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值