Elasticsearch--基础知识点--3--ES安装

1 本地安装

2 使用docker-compose

前提已安装好docker和docker-compose,且已启动docker服务

所使用镜像是hub.docker.comelasticsearch:7.9.3kibana:7.9.3,不用提前docker pull,编写好docker-compose.yml后,直接通过docker-compose up启动时会自动拉取

2.1 单结点elasticsearch

2.1.1 环境准备

调整用户 mmap 计数,否则启动时可能会出现内存不足的情况

# 查看当前限制
[root@zhangsan elasticsearch]# sysctl vm.max_map_count
vm.max_map_count = 65530

临时修改 - 不需要重启

[root@zhangsan elasticsearch]# sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144

永久修改 - 需要重启

vi /etc/sysctl.cof
# 增加 如下内容
vm.max_map_count = 262144

2.1.2创建项目目录

----elasticsearch
  ----docker-compose.yml
  ----es
    ----data
    ----config
    ----logs
    ----plugins
      ----ik
      ----pinyin
  ----kibana

修改权限,否则启动过程会报错

[root@zhangsan es]# chmod -R 777 data
[root@zhangsan es]# chmod -R 777 config

在es/config下创建elasticsearch.yml文件,内容如下:

cluster.name: "docker-cluster"
network.host: 0.0.0.0

elasticsearch.yml内容应该也可以为空(本文未测试,只是猜想),因为对于配置内容也可以在docker-compose.yml的environment来设置,本文采用的也是该种方式。

不论elasticsearch.yml是否为空,conf下该文件都必须存在,因为docker-compose.yml中通过volumes进行了设置,否则启动时会报错。

2.1.3 编写docker-compose.yml

docker-compose.yml

version: "3"
services:
    elasticsearch:
        image: elasticsearch:7.9.3
        container_name: elasticsearch
        ports:
            - 9200:9200
        volumes:
             - ./data:/usr/share/elasticsearch/data:rw
             - ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:rw
             - ./logs:/usr/share/elasticsearch/logs:rw
             - ./plugins:/usr/share/elasticsearch/plugins:rw
        networks:
            mynet:
                ipv4_address: 172.16.22.2
        # restart: always
        environment:
            - cluster.name=es-cluster         # 集群名
            - node.name=zhangsan              # 结点名
            - node.data=true                  # 指定该节点是否存储索引数据,默认为true。
            - bootstrap.memory_lock=true      # 需求锁住物理内存,是:true、否:false
            - http.cors.enabled=true          # 是否支持跨域,是:true,在使用head插件时需要此配置
            - http.cors.allow-origin=*        # "*" 表示支持所有域名
            - http.port=9200                  
# 主机访问的端口号
            - network.host=0.0.0.0
            - ES_JAVA_OPTS=-Xms512m -Xmx512m  # 设置使用jvm内存大小
            - discovery.type=single-node      # 以单一节点模式启动
        ulimits:                              # 取消内存相关限制  用于开启内存锁定
            memlock:
                soft: -1
                hard: -1

    # kibana:
    #     image: kibana:7.9.3
    #     container_name: kibana
    #     ports:
    #         - 5601:5601
        # volumes:
        #    - ./kibana_config/:/usr/local/kibana/config
    #      networks:
    #        mynet:
    #            ipv4_address: 172.16.22.3
        # restsrt: always
    #     environment:
    #         - ELASTICSEARCH_HOSTS= http://172.16.22.2:9200
    #         - I18N_LOCALE=zh-CN
    #         - XPACK_GRAPH_ENABLED=true
    #         - TIMELION_ENABLED=true
    #         - XPACK_MONITORING_COLLECTION_ENABLED=true
    #     depends_on:
    #         - elasticsearch

networks:
    mynet:
        driver: bridge
        ipam:
            driver: default
            config:
                -
                 subnet: 172.16.22.0/24
                 gateway: 172.16.22.1

此处没有启动kibana,每次启动导致失败,猜测可能是由于服务器内存(1G)太小导致,因此此处只启动elasticsearch。

由于服务端不能启动kibana,此处采用在本地启动kibana。启动容器后,在本地下载相应版本的kibana,解压,修改D:\Program Files\kibana-7.9.3-windows-x86_64\config\kibana.yml配置文件,修改如下:

elasticsearch.hosts: ["http://服务器的外网IP:9200"]

服务器elasticsearch启动成功后,进入本地D:\Program Files\kibana-7.9.3-windows-x86_64\bin目录,双击kibana.bat,启动kibana。

注意服务器需要通过firewarll-cmd打开9200,5601端口,且服务器安全组也需要打开9200,5601端口。

2.1.5 安装elasticsearch-analyze-ik和elasticsearch_analyze_pinyin

两种安装方法:

  • 启动容器后进入容器,然后进入/usr/share/elasticsearch/bin下,执行以下命令
    ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip
    ./elasticsearch-plugin insatll https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.9.3/elasticsearch-analysis-pinyin-7.9.3.zip
    
    不建议使用该方法,github下载速度太慢,容易出错。而且采用该方法安装完成后需要重启ES。
  • 直接到相应地址下载,然后解压到elasticsearch/plugins/ik和elasticsearch/plugins/pinyin,然后通过docker-compose up启动elasticsearch容器

这两个插件的版本必须与elasticsearch的版本相同

此处采用下载解压的方法:

elasticsearch-analysis-ik-7.9.3.zip
elasticsearch-analysis-pinyin-7.9.3.zip

1 下载ik和pinyin压缩包到本地

2 上传解压

[root@zhangsan ik]# rz # 通过rz 将下载到本地的elasticsearch-analysis-ik-7.9.3.zip传到服务器
[root@zhangsan ik]# unzip elasticsearch-analysis-ik-7.9.3.zip   # 解压
[root@zhangsan pinyin]# rz # 通过rz 将下载到本地的elasticsearch-analysis-pinyin-7.9.3.zip传到服务器
[root@zhangsan pinyin]# unzip elasticsearch-analysis-pinyin-7.9.3.zip   # 解压

2.1.4 启动容器

使用该命令可以查看启动过程是否出错

docker-compose up

也可以使用以下命令,只不过不能看到启动过程的详细信息

docker-compose up -d

2.1.5 测试是否启动成功

1 测试elasticsaerch容器是否启动成功

1.1 在服务端测试

(base) [root@zhangsan elasticsearch]# curl 127.0.0.1:9200
{
  "name" : "zhangsan",
  "cluster_name" : "es-cluster",
  "cluster_uuid" : "uE4YqkzvSn-x2Noug563tg",
  "version" : {
    "number" : "7.9.3",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
    "build_date" : "2020-10-16T10:36:16.141335Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

说明elasticsaerch容器已成功启动

1.2 在本地此时

本地浏览器访问http://服务器外网地址:9200,查看是否成功。若没有成功,说明服务器没有打开9200端口或服务器安全组没有打开9200端口。

2 测试ik是否成功

2.1 在服务器测试

[root@zhangsan elasticsearch]# curl -H 'Content-Type: application/json' -XGET '127.0.0.1:9200/_analyze?pretty=true' -d '{"analyzer":"ik_max_word","text":"*"}'
{
  "tokens" : [
    {
      "token" : "*",
      "start_offset" : 0,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "中华人民",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "中华",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "华人",
      "start_offset" : 1,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "人民*",
      "start_offset" : 2,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "人民",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 5
    },
    {
      "token" : "*",
      "start_offset" : 4,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 6
    },
    {
      "token" : "共和",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 7
    },
    {
      "token" : "国",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "CN_CHAR",
      "position" : 8
    }
  ]
}

2.2 在本地通过命令行测试,不建议,一般会因为cmd字符集的问题导致请求其体中含有中文时会报错,目前没有找到解决方案。

curl -H 'Content-Type: application/json' -XGET '117.51.150.116:9200/_analyze?pretty=true' -d '{"analyzer":"ik_max_word","text":"*"}'

此处要注意的是curl命令,在windows和linux中稍有不同。在linux中使用单引号[ ' ]的地方windowns中使用双引号[ " ],在linux中使用双引号[ " ]的地方windowns中使用三个双引号[ """ ]。

2.3 在本地通过浏览器使用kibana测试,建议使用。

若采用的是在服务器启用kibana容器,浏览器中访问http://服务器IP:5601

若采用的是在本地启用kibana服务,浏览器中访问http://127.0.0.1:5601,此处采用的是该方法。
Elasticsearch--基础知识点--3--ES安装
表明ik安装成功。

上一篇:Elasticsearch----IK分词器的安装及简单演示


下一篇:elasticsearch中文分词插件IK安装