zoukankan      html  css  js  c++  java
  • Linux环境安装Elasticsearch

    基本概念

    ES是什么?我们可以把ES比作一个Mysql数据库,同样用来存储数据,不过比Mysql提供了更多的搜索功能,例如分词搜索,关联度搜索等,而且搜索速度也不是同一级别的, ES能够实现百万数据/秒的查询速度。接下来将ES中用到的概念和Mysql进行类比:

    字段解释
    index 索引,相当于Mysql中的一个库,例如有一个叫『orders』的库,那么里面可以建立很多表,存储不同类型的数据,而表在ES中就是type。
    type 类型,相当于Mysql中的一张表,存储json类型的数据
    document 文档,一个文档相当于Mysql一行的数据
    shards 分片,通俗理解,就是数据分成几块区域来存储,可以理解为mysql中的分库分表(不太恰当)
    replicas 备份,就是分片的备份数,相当于mysql的备份库

    一、准备工作

    ES为了安全不允许使用root用户启动。ES5之后的都不能使用添加启动参数或者修改配置文件等方法启动了,必须要创建用户。
    root用户身份创建用户es

    1. adduser es
    2. passwd es

    二、 安装ES

    es安装目录放在了root的家目录下,新用户是不能访问到的,所以即使ES属于新用户了,但目录权限原因访问不到lib里的jar包,所以找不到Java类。 把ES搬到新用户的家(home)目录以内即可。
    为了避免上述麻烦,我们直接切换到新建的es用户下,然后新建目录和下载安装包。

    [root@iZj6c49h0dw85252u6oxu0Z ~]# su es
    [es@iZj6c49h0dw85252u6oxu0Z root]$ cd ~
    [es@iZj6c49h0dw85252u6oxu0Z ~]$ pwd
    /home/es
    [es@iZj6c49h0dw85252u6oxu0Z ~]$ mkdir es
    [es@iZj6c49h0dw85252u6oxu0Z ~]$ cd es

    给es用户设置目录权限
    chown -R es:es /es
    chmod -R 755 /es

     手动下载地址:https://www.elastic.co/cn/downloads/elasticsearch#ga-releas

    下载7.16.2版本(此版本已修复log4j漏洞):

    [es@iZj6c49h0dw85252u6oxu0Z es]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.2-linux-x86_64.tar.gz

    解压:

    [es@iZj6c49h0dw85252u6oxu0Z es]$ tar -zxvf elasticsearch-7.16.2-linux-x86_64.tar.gz

    启动,通过 -d 参数,表示后台运行。:

    [es@iZj6c49h0dw85252u6oxu0Z es]$ cd elasticsearch-7.16.2/
    [es@iZj6c49h0dw85252u6oxu0Z elasticsearch-7.16.2]$ bin/elasticsearch -d
    

    可以通过 logs/elasticsearch.log 日志,查看启动是否成功。

    如果出现如下错误:

    "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME"

    译文的含义是指“警告:不推荐使用JAVA_HOME,请使用ES_JAVA_HOME”。

    elasticsearch 7系列版本以上都是自带的jdk,可以在es的bin目录下找到elasticsearch-env.bat这个文件,配置es的jdk。官方推荐使用es自带的jdk。

    解决如下:切换到root账户

    vi /etc/profile

    增加如下配置

    export ES_JAVA_HOME=/es/elasticsearch-7.16.2/jdk

    保存退出,执行:  source /etc/profile 重新启动es即可

    三、测试:

    访问 http://服务器 IP:9200 后,成功返回如下 JSON 串,表示成功。

    es@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]$ curl http://localhost:9200/
    {
      "name" : "UK2obWU",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "ao_6EsyNQ5q2Epd-Xe5mMg",
      "version" : {
        "number" : "7.16.2",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "816e6f6",
        "build_date" : "2018-11-09T18:58:36.352602Z",
        "build_snapshot" : false,
        "lucene_version" : "7.5.0",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You Know, for Search"
    }
    

    3.1 错误1

    如果没有看到json,而是如下信息:

    [root@izuf672oio5mc4fbyj0s0jz ~]# curl http://47.244.38.173:9200/
    curl: (7) Failed connect to 47.244.38.173:9200; Connection refused
    

    修改elasticsearch.yml文件,去掉注释并修改IP:network.host: 0.0.0.0,并开通入方向的阿里云访问规则,再次启动ES就可以了。

    [es@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]$ vi config/elasticsearch.yml 
    
     
     
    修改network.host

    3.2 错误2

    启动失败查看日志提示:

    [1] bootstrap checks failed
    [1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
    

    3.2.1

    修改 /etc/security/limits.conf ,在此配置中修改以下内容。如果服务器已经配置好,可以不用重复配置。需要在 Root 下执行。

    * soft nofile 65536
    * hard nofile 65536
    

    修改完成后同时使用命令修改配置:

    $ ulimit -n 65536
    $ ulimit -n
    65536
    

    这些配置主要为文件系统描述符及相关的配置,具体的配置可以根据自己的系统配置调大或调小。

    3.2.2

    修改/etc/sysctl.conf,增加如下内容(如果服务器已经配置好,可以不用重复配置。需要在 Root 下执行):

    vm.max_map_count=655360
    

    修改完成后,执行 sysctl -p 命令,使配置生效。

    [es@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]$ su root
    Password: 
    [root@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]# vi /etc/security/limits.conf
    [root@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]#  ulimit -n 65536
    [root@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]#  ulimit -n
    65536
    [root@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]# vi /etc/sysctl.conf
    [root@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]# sysctl -p
    ......
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_max_syn_backlog = 1024
    net.ipv4.tcp_synack_retries = 2
    kernel.sysrq = 1
    vm.max_map_count = 655360
    ...
    

    通过浏览器访问http://10.1.1.250:9200/,可以返回json数据证明ES可以正常运行。

    浏览器访问

     

    四、安装IK分词插件

    安装 elasticsearch-analysis-ik 插件为示例。

    4.1下载

    https://github.com/medcl/elasticsearch-analysis-ik/releases 中,提供了各个 elasticsearch-analysis-ik 插件版本。要注意,一定和 Elasticsearch 版本一致。例如说 Elasticsearch 版本是 7.16.2 ,所以需要使用 elasticsearch-analysis-ik-v7.16.2

    #当前目录
    [es@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]$ pwd
    /home/es/es/elasticsearch-7.16.2
    #开始下载
    [es@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.16.2/elasticsearch-analysis-ik-7.16.2.zip
    

    4.2解压:

    需要解压到 plugins/ik/ 目录下

    $ unzip elasticsearch-analysis-ik-7.16.2.zip -d plugins/ik/
    

    4.3重启:

    查找 ES 进程,并关闭它

    $ ps -ef | grep elastic
    es        5005     1  4 21:28 pts/0    00:00:23 /bin/java -Xms1g -Xmx1g -XX:......
    $ kill 5005 # 我们找到的 ES 进程号为 5005 。
    
    # 启动 ES 进程
    $ bin/elasticsearch -d
    

    4.4 查看日志

    $ cat logs/elasticsearch.log 
    
    [2020-07-05T21:37:59,460][INFO ][o.e.p.PluginsService     ] [UK2obWU] loaded module [x-pack-security]
    [2020-07-05T21:37:59,460][INFO ][o.e.p.PluginsService     ] [UK2obWU] loaded module [x-pack-sql]
    [2020-07-05T21:37:59,460][INFO ][o.e.p.PluginsService     ] [UK2obWU] loaded module [x-pack-upgrade]
    [2020-07-05T21:37:59,460][INFO ][o.e.p.PluginsService     ] [UK2obWU] loaded module [x-pack-watcher]
    [2020-07-05T21:37:59,460][INFO ][o.e.p.PluginsService     ] [UK2obWU] loaded plugin [analysis-ik]
    

    可以看到成功加载的信息:loaded plugin [analysis-ik]


    至此我们已经安装了ES及ik分词插件。

    转载自:https://www.jianshu.com/p/941c9797923e 

  • 相关阅读:
    Service Name Port Number Transport Protocol tcp udp 端口号16bit
    linux linux 互传文件 win 不通过 ftp sftp 往linux 传文件(文件夹)
    soft deletion Google SRE 保障数据完整性的手段
    Taylor series
    Taylor's theorem
    Moving average
    REQUEST
    Unix file types
    mysqld.sock
    Tunneling protocol
  • 原文地址:https://www.cnblogs.com/guliang/p/15656414.html
Copyright © 2011-2022 走看看