• 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 

  • 相关阅读:
    STM32F4xx时钟理解
    ubuntu突然卡住
    图像处理的面试问题汇总(6)
    更改IOS于UISearchBar撤消button底、搜索输入文本框背景中的内容和UISearchBar底
    PHP于DIRECTORY_SEPARATOR任务
    iOS8使用Core Graphics实现渐变效果-Swift基础教程
    iOS开发系列--打造自己的“美图秀秀”
    swiftTools
    如何把UIView转成UIImage,解决模糊失真问题
    Android清理内存
  • 原文地址:https://www.cnblogs.com/guliang/p/15656414.html
Copyright © 2020-2023  润新知