Elasticsearch

  1. Elasticsearch搜索引擎
    1. 简介
    2. 搜索原理
      1. 倒排索引:
      2. 相关性排序:
    3. 集群
    4. ES的单机部署
      1. 一、配置网卡(无网环境忽略此条)
      2. 二、配置本地yum源(有网环境忽略此条)
        1. 注意:
      3. 三、关闭防火墙及selinux
        1. 注意:
      4. 四、安装docker
        1. 注意:
      5. 五、开启docker服务
      6. 六、安装java(部署es 的依赖)
        1. 本地安装java
      7. 七、读取镜像(根据实际情况)
      8. 八、如果需要docker-compose启动
  2. ES集群部署
    1. 一、部署集群
      1. 注意:
      2. 如果没有操作权限,则执行:
    2. 当不使用es远程词典时:
      1. 说明:
      2. 添加自定义同义词
  3. 二、修改集群配置
  4. 三、启动集群
  5. 四、搜索部署
    1. 注意:
  6. 添加删除字段
    1. 注意:
  • 五、查询启动结果
  • 六、数据量查询
  • 七、search-guard为es集群配置auth
    1. 1、安装search-guard插件和ssl插件
      1. 查询es的版本
      2. 安装search-guard
      3. 安装search-guard-ssl
      4. 注意:
    2. 2、生成es证书文件
      1. 下载search-guard源码工具,生成证书的工具
      2. 修改ca配置
      3. 修改sh文件
      4. 生成证书,运行example.sh
    3. 3、配置es,启动search-guard
      1. 将生成的各个节点的证书,分别copy到各个节点上
      2. 修改es的配置文件config/elaticsearch.yml
      3. 启动es
    4. 4、将search-guard的配置写入es中
      1. 以上配置生成的命令为
    5. 5、添加es用户及密码
      1. 生成md5加密密码
      2. 添加用户及密码
      3. 添加用户的权限
      4. 重新将配置写入es中生效
    6. 6、测试
  • 八、x-pack为es集群配置auth
    1. 1、要求
    2. 2、安装x-pack
    3. 3、对elasticsearch、logstash、kibana分别设置登录密码(默认es用户名为elastic,logstash用户名为logstash_system,kibana用户名为kibana)
    4. 4、配置./config/elasticsearch.yml
    5. 5、测试访问
    6. 6、x-pack默认账号密码
    7. 注意:
    1. Elasticsearch搜索引擎
      1. 简介
      2. 搜索原理
        1. 倒排索引:
        2. 相关性排序:
      3. 集群
      4. ES的单机部署
        1. 一、配置网卡(无网环境忽略此条)
        2. 二、配置本地yum源(有网环境忽略此条)
          1. 注意:
        3. 三、关闭防火墙及selinux
          1. 注意:
        4. 四、安装docker
          1. 注意:
        5. 五、开启docker服务
        6. 六、安装java(部署es 的依赖)
          1. 本地安装java
        7. 七、读取镜像(根据实际情况)
        8. 八、如果需要docker-compose启动
    2. ES集群部署
      1. 一、部署集群
        1. 注意:
        2. 如果没有操作权限,则执行:
      2. 当不使用es远程词典时:
        1. 说明:
        2. 添加自定义同义词
    3. 二、修改集群配置
    4. 三、启动集群
    5. 四、搜索部署
      1. 注意:
    6. 添加删除字段
      1. 注意:
  • 五、查询启动结果
  • 六、数据量查询
  • 七、search-guard为es集群配置auth
    1. 1、安装search-guard插件和ssl插件
      1. 查询es的版本
      2. 安装search-guard
      3. 安装search-guard-ssl
      4. 注意:
    2. 2、生成es证书文件
      1. 下载search-guard源码工具,生成证书的工具
      2. 修改ca配置
      3. 修改sh文件
      4. 生成证书,运行example.sh
    3. 3、配置es,启动search-guard
      1. 将生成的各个节点的证书,分别copy到各个节点上
      2. 修改es的配置文件config/elaticsearch.yml
      3. 启动es
    4. 4、将search-guard的配置写入es中
      1. 以上配置生成的命令为
    5. 5、添加es用户及密码
      1. 生成md5加密密码
      2. 添加用户及密码
      3. 添加用户的权限
      4. 重新将配置写入es中生效
    6. 6、测试
  • 八、x-pack为es集群配置auth
    1. 1、要求
    2. 2、安装x-pack
    3. 3、对elasticsearch、logstash、kibana分别设置登录密码(默认es用户名为elastic,logstash用户名为logstash_system,kibana用户名为kibana)
    4. 4、配置./config/elasticsearch.yml
    5. 5、测试访问
    6. 6、x-pack默认账号密码
    7. 注意:
  • Elasticsearch搜索引擎

    简介

    Eladticsearch是一个基于Lucene库的搜索引擎

    他提供了一个分布式、支持多用户的全文搜索引擎,采用的是HTTP接口的方式对外提供服务

    Elasticsearch 是一个实时的分布式搜索分析引擎,它被用作全文检索、结构化搜索、分析以及这三个功能的组合

    属于面向文档的数据库

    • Elasticsearch 是 面向文档 的,意味着它存储整个对象或 文档。Elasticsearch 不仅存储文档,而且 索引每个文档的内容使之可以被检索。在 Elasticsearch 中,你 对文档进行索引、检索、排序和过滤–而不是对行列数据。

    搜索原理

    倒排索引:

    • 倒排索引是一种索引方法,被用来存储在全文搜索下某个单词在文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构(会对文档数据进行标准化处理)

    相关性排序:

    • 检索词频率:检索词在该文档中出现的次数,出现次数越多,相关性越高
    • 反向文档频率:检索词在整个文档中出现的频率,出现次数越多相关性越低
    • 字段长度准则:长度越长,相关性越低

    集群

    • 节点(node)
      • 一个运行中的Elasticsearch实例称为一个节点
      • 每个节点都知道任意文档的所处位置,可以将请求发给任意一个节点(包括主节点),所以主节点不会成为不会成为集群的瓶颈
      • 主节点:当一个节点被选举成主节点时,它将负责管理集群范围内所有变更,例如增加、删除索引,或者增加删除节点。而主节点并不需要涉及到文档级别的变更和搜索等操作。
    • 分片(shard)
      • 一个分片是一个底层的工作单元 它仅保存了 全部数据中的一部分。Elasticsearch 是利用分片将数据分发到集群内各处的。分片是数据的容器,文档保存在分片内,分片又被分配到集群内的各个节点里。 当你的集群规模扩大或者缩小时, Elasticsearch 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里。
      • 主分片(primary shard):索引内的任意一个文档都属于一个主分片,所以主分片(按50G时查询和写入的性能较好)的数目决定着能够保存的最大数据量
      • **复制分片(replica shard)**:复制分片是主分片的拷贝。复制分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务。
      • 在索引建立的时候就已经确定了主分片数,但是副本分片数可以随时修改.
      • 每一个分片是一个功能完整的搜索引擎,它可以使用一个节点上的所有资源的能力。复制分片越多,也将拥有越高的吞吐量
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 设置索引的分片
    curl -X PUT IP:9200/库名 -H 'Content-Type: application/json' -d'
    {
    "settings" : {
    "index": {
    "number_of_shards" : 3,
    "number_of_replicas" : 1
    }
    }
    }
    '
    # 修改副分片数量
    PUT IP:9200/库名/_settings {"number_of_replicas" : 2}
    # 查看集群健康状态
    GET IP:9200/_cluster/health

    未完待续。。。。。。。。。。

    ES的单机部署

    一、配置网卡(无网环境忽略此条)

    1
    2
    3
    4
    5
    6
    vi /etc/sysconfig/network-scripts/ifcfg-*

    BOOTPROTO=static # 修改为静态网路,可以不修改
    ONBOOT=yes

    systemctl restart network

    二、配置本地yum源(有网环境忽略此条)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    mkdir /centos7		#存放本地yum源

    mount /iso ./tmp #将iso镜像挂载到本地文件中

    cp -vrf ./tmp/* /centos7 #将挂载后到本地文件copy到本地yum源文件中

    cd /etc/yum.repos.d

    mv ./CentOS-* /root/tmp #移除yum到网络源信息

    vi yum.repo #编写本地yum
    [centos7-yum]
    name="yum.local"
    baseurl=file:///centos7
    gpgcheck=0
    enabled=1

    yum clean all #刷新缓存

    rm -rf /var/cache/yum

    yum list #显示数据则表示本地yum配置成功

    yum install net-tools #安装net-tools,查看ifconfig
    注意:

    ​ 本地挂载完镜像之后,如果还要使用该文件的话,必须先umount该文件,否则会报错,提示权限不够

    三、关闭防火墙及selinux

    1
    2
    3
    4
    5
    6
    7
    systemctl disable firewalld
    systemctl stop firewalld

    vi /etc/sysconfig/selinux
    SELINUX=disabled
    setenforce 0
    getenforce
    注意:

    ​ 安装docker时可以不用关闭,当es进行集群部署时,必须关闭,否则集群无法生效

    四、安装docker

    1
    2
    3
    4
    5
    scp docker.zip root@ip:~	#没网手动copy
    unzip docker.zip
    cd docker
    sh setup_without_container-selinux-2.9 #虚拟机/实体机
    # 服务器,直接联网安装,不赘述

    setup_without_container-selinux-2.9.sh 脚本内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #auto-mount
    yum clean all
    yum makecache
    yum remove -y docker-engine
    mkdir -p /data/tmp
    chmod -R 777 /data/tmp
    mkdir -p /data/sys/var/docker
    chmod -R 777 /data/sys/var/docker
    ln -s /data/sys/var/docker /var/lib/docker
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    echo "vm.max_map_count=655360" >> /etc/sysctl.conf && sysctl -p
    yum install -y net-tools
    useradd -d /data/duser -m duser
    echo "duser:5VSDHai4" |chpasswd
    echo "duser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
    rpm -ivh container-selinux-2.9-4.el7.noarch.rpm
    yum install -y ./docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
    usermod -aG docker duser
    rm -fr ./*
    cd ../
    rm -fr docker_install docker_install.tar.gz
    注意:

    ​ sh脚本可以根据具体情况进行修改

    ​ 当出现无法安装成功,且提示rpm安装问题时,在rpm安装命令之后,加 —nodeps —force ,意思为不考虑分析包之间的依赖关系,即可安装成功

    五、开启docker服务

    1
    2
    3
    4
    systemctl start docker
    systemctl enable docker
    systemctl status docker
    docker version #查询是否开启docker

    六、安装java(部署es 的依赖)

    1
    java -version	#查看是否有java,如果有,忽略以后步骤
    本地安装java

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    1
    2
    3
    4
    5
    6
    mkdir /usr/java
    cp jdk-8u171-linux-x64.rpm /usr/java
    cd /usr/java
    chmod +x jdk-8u171-linux-x64.rpm
    rpm -ivh jdk-8u171-linux-x64.rpm
    java -version

    七、读取镜像(根据实际情况)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    docker load -i image.tar	#如果是zip的镜像,则先unziip成tar文件
    docker images

    # 启动容器,并且将本地的文件目录挂载至容器data目录下
    docker run -itd -p 8888:8888 -v /data/origin_file:/data/duser/patent_similaruty/data/origin_file --name patent_preprocess patent_preprocess:1.1 bash

    #进入容器
    docker exec -it patent_preprocess bash

    #停止容器
    docker stop patent_preprocess

    八、如果需要docker-compose启动

    安装并使用docker-compose

    方法一:

    使用curl命令下载

    1
    2
    3
    curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose

    chmod +x /usr/local/bin/docker-compose

    方法二:

    使用pip命令下载

    1
    2
    3
    4
    5
    yum -y install epel-release

    yum -y install python-pip

    pip install docker-compose

    ES集群部署

    一、部署集群

    user用户下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    unzip elasticsearch_bak.zip	#解压引擎文件
    # 修改默认的配置文件
    cd elasticsearch_bak/config
    vi elasctsearch.yml
    cluster.name: es-zl #修改集群名,所有节点配置的该名称必须一样
    node.name: es-46 #修改每个节点的名称,必须不同,以区分每个节点
    node.master:true #是否可作为主节点
    path.data: /data/es_data #es数据存放的位置
    network.host:127.17.30.46 #每个节点的ip地址
    http.port: 9200 #节点的端口,必须相同,默认9200

    bootstrap.memory_lock: true
    bootstrap.system_call_filter: false #内存锁定,防止swap使es产生内存交互
    discovery.zen.ping.unicast.hosts:["127.17.30.44","127.17.30.45",,] #集群master节点的ip,不需要所有节点的ip,其他节点只要能与任意一个master节点通讯,即可加入到该集群当中
    discovery.zen.minimum_master_nodes:2 #当2个有资格成为主节点的从节点认为主节点挂了,则进行重新选主,一般设置为(n/2)+1,防止es出现脑裂情况
    gateway.recover_after_nodes: 3 #节点数量达到多少之后,进行数据恢复处理
    http.cors.enabled: true
    http.cors.allow-origin: "*"

    vi yvm.options
    -Xms16g #默认为2g,可根据服务器内存,自行修改

    #通过一下命令查看内存
    cat /proc/cpuinfo | grep 'cpu cores' | wc -l #查看cpu核数
    cat /proc/meminfo | grep MemTotal #只查看内存
    free -h #查看内存的使用
    df -h #查看硬盘存储
    注意:

    ​ 该操作必须在每台服务器上都要部署,并不能在root用户下操作,要在user下操作,如果没有usr用户,则创建

    如果没有操作权限,则执行:
    1
    2
    3
    # root下,将文件权限设置为duser用户可操作
    chown duser *
    chgrp duser *

    当不使用es远程词典时:

    修改elasticsearch-5.3.0/plugins/ik/config/IKAnalyzer.cfg.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    <comment>IK Analyzer 扩展配置</comment>
    <!--用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>
    <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords">custom/ext_stopword.dic</entry>
    <!--用户可以在这里配置远程扩展字典 -->
    <!-- <entry key="remote_ext_dict">http://10.172.80.229:9301/mydict.dic</entry> -->
    <!--用户可以在这里配置远程扩展停止词字典-->

    <!-- <entry key="remote_ext_stopwords">http://10.172.80.229:9301/stopword.dic</entry> -->
    </properties>

    说明:

    ​ 注释后两项即可

    添加自定义同义词

    替换config/synonyms.txt文件

    synonyms.txt文件内格式,所有同义词为一行,且用 “, ” 隔开

    二、修改集群配置

    root用户下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    vi /etc/security/limits.conf
    #添加一下语句
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 65536
    * hard nproc 65536
    duser soft memlock unlimited
    duser hard memlock unlimited

    vi /etc/sysctl.conf
    #修改以下语句
    vm.max_map_count=655360

    sysctl -p

    三、启动集群

    user用户下

    1
    2
    3
    4
    5
    cd elasticsearch_bak/bin
    ./elasticsearch -d #后台启动集群
    curl 172.17.30.45:9200/_cat/nodes #查看所有节点,*为主节点

    # 启动不了时候,查看es-log

    四、搜索部署

    user用户下的操作

    1
    2
    3
    4
    5
    6
    7
    8
    vi index_search_mapping.sh
    #修改的ip和端口与集群一样
    curl -XPUT "http://10.25.114.90:9200/index"
    {
    settings": {
    "number_of_shards": 6, #主分片数量,一般为 服务器总核数
    "number_of_replicas": 2, #副本分片的数量,防止数据丢失
    }
    注意:

    ​ 分词器anslyzer可以根据实际情况进行修改、删除和添加

    添加删除字段

    ​ 当需要添加字段时,只要在以下位置添加即可

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    "mappings": {
    "index": {
    "properties": {
    "id": {
    "type": "keyword"
    },
    "": { #需要添加的字段名
    "type":"" #添加的字段的约束条件
    }
    }
    }
    }
    注意:

    ​ 修改某个文件的字段之前,需要先删除该文件的core

    ​ 重新启动搜索时,也需要进行以下步骤

    1
    2
    3
    curl -XDELETE "http://172.19.30.45:9200/index"
    #修改完之后,重新运行该文件
    sh index_search_mapping.sh

    五、查询启动结果

    1
    2
    3
    4
    curl http://ip:9200/index?pretty		#查询字段
    curl http://ip:9200/_cat/nodes #查询节点
    curl http://ip:9200/_cat/health #查询加群健康,green
    curl http://ip:9200/_cat/shards #查询集群分片状态

    六、数据量查询

    1
    2
    3
    4
    5
    6
    7
    curl http://ip:9200/one_index/_stats	#查询某一个index下的数据量
    curl http://ip:9200/one_index,two_index/_stats #查询多个index的数据量,使用,隔开
    curl http://ip:9200/_all/_stats #查询所有index下的数据量

    # 返回search、fetch、get、index、bulk、segment、counts

    curl http://ip:9200/_cat/count/index #只查询某个index下的文档数,如果不加index,则查询所有的index的文档总数

    七、search-guard为es集群配置auth

    1、安装search-guard插件和ssl插件

    查询es的版本
    1
    2
    3
    curl ip:9200

    # 结果中的number数据即代表版本号
    安装search-guard

    https://repo1.maven.org/maven2/com/floragunn/search-guard-5

    找到对应的版本,下载即可

    或者使用命令行下载,es目录下

    1
    bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.3.0-12
    安装search-guard-ssl

    https://repo1.maven.org/maven2/com/floragunn/search-guard-ssl

    命令行

    1
    bin/elasticsearch-plugin install -b com.floragunn:search-guard-ssl:5.3.0-22
    注意:

    当es版本较高时,可能并不需要这两个都存在,取search-guard即可

    2、生成es证书文件

    下载search-guard源码工具,生成证书的工具
    1
    git clone https://github.com/floragunncom/search-guard-ssl.git
    修改ca配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    cd search-guard-ssl/example-pki-scripts/etc/

    vi root-ca.conf # 根证书配置
    0.domainComponent = "www.test.com” # 域名
    1.domainComponent = "www.test.com" # 域名
    organizationName = "Test" # 组织名称
    organizationalUnitName = "Test Root CA" # 组织单位名称
    commonName = "Test Root CA" # 通用名称

    vi signing-ca.conf # 签名证书配置
    0.domainComponent = "www.test.com” # 域名
    1.domainComponent = "www.test.com" # 域名
    organizationName = "Test" # 组织名称
    organizationalUnitName = "Test Signing CA" # 组织单位名称
    commonName = "Test Signing CA" # 通用名称

    注意:

    ​ 以上信息填写,必须保证和生成证书时信息一致

    修改sh文件

    返回example-pki-scripts目录下,修改example.sh文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/bash

    set -e

    ./clean.sh

    ./gen_root_ca.sh 12345678 12345678

    ./gen_node_cert.sh 0 12345678 12345678&& ./gen_node_cert.sh 1 12345678 12345678 && ./gen_node_cert.sh 2 12345678 12345678

    ./gen_client_node_cert.sh test 12345678 12345678

    ./gen_client_node_cert.sh test 12345678 12345678

    参数说明:

    ./gen_root_ca.sh 12345678 12345678

    第一个参数为CA_PASS,即CA密码(根证书密码)

    第二个参数为TS_PASS,即TS密码(truststore,信任证书密码)

    ./gen_node_cert.sh 0 12345678 12345678

    第一个参数为node编号,生成证书后的文件名为node-0*

    第二个参数为KS_PASS(keystore文件密码)

    第三个参数为CA_PASS

    ./gen_client_node_cert.sh test 12345678

    第一个参数为客户端节点名称,生成证书后的文件名为test*

    第二个参数为KS_PASS

    第三个参数为CA_PASS

    生成证书,运行example.sh
    1
    2
    3
    sh example.sh

    # 在当前目录下会生成证书文件

    3、配置es,启动search-guard

    将生成的各个节点的证书,分别copy到各个节点上
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 将node-0-keystore.jks和truststore.jks复制到es的config目录下

    cp node-0-keystore.jks ~/elasticsearch/config/
    cp truststore.jks ~/elasticsearch/config/

    # 将test-keystore.jks和truststore.jks复制到es的plugins/search-guard-2/sgconfig目录下

    cp test-keystore.jks ~/elasticsearch/plugins/search-guard-2/sgconfig/
    cp truststore.jks ~/elasticsearch/plugins/search-guard-2/sgconfig/

    注意:

    ​ 保持证书的一致性,因此只需要在一台机器上生成CA证书即可

    修改es的配置文件config/elaticsearch.yml

    在之前修改的基础上,增加如下配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 配置ssl
    searchguard.ssl.transport.enabled: true
    searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks
    searchguard.ssl.transport.keystore_password: 12345678
    searchguard.ssl.transport.truststore_filepath: truststore.jks
    searchguard.ssl.transport.truststore_password: 12345678
    searchguard.ssl.transport.enforce_hostname_verification: false
    searchguard.ssl.transport.resolve_hostname: false

    # 配置https
    # http配置,这里我只是为了测试方便,配置完,应该设置为true
    searchguard.ssl.http.enabled: false
    searchguard.ssl.http.keystore_filepath: node-0-keystore.jks
    searchguard.ssl.http.keystore_password: 12345678
    searchguard.ssl.http.truststore_filepath: truststore.jks
    searchguard.ssl.http.truststore_password: 12345678

    # CN为生成CA证书时填写的信息,即./gen_client_node_cert.sh test 12345678 命令的第一个参数
    searchguard.authcz.admin_dn:
    - CN=test, OU=client, O=client, L=Test, C=DE
    启动es

    4、将search-guard的配置写入es中

    添加权限

    1
    2
    chmod -R 777 plugins/search-guard-5/tools/sgadmin.sh

    配置格式

    1
    2
    ./plugins/search-guard-5/tools/sgadmin.sh -cn clustername -h hostname -cd plugins/search-guard-5/sgconfig -ks plugins/search-guard-5/sgconfig/admin-keystore.jks -kspass password -ts plugins/search-guard-5/sgconfig/truststore.jks -tspass password -nhnv

    注意:

    ​ clustername为集群的名称

    ​ hostname为elasticsearch.yml 文件中 network.host 的值

    ​ password生成证书设置的密码

    以上配置生成的命令为
    1
    2
    ./plugins/search-guard-5/tools/sgadmin.sh -cn es-nlp -h 192.168.124.18 -cd plugins/search-guard-5/sgconfig -ks plugins/search-guard-5/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-5/sgconfig/truststore.jks -tspass 12345678 -nhnv

    5、添加es用户及密码

    生成md5加密密码
    1
    2
    3
    4
    5
    6
    7
    8
    chmod -R 777 plugins/search-guard-2/tools/hash.sh

    cd plugins/search-guard-2/tools/

    plugins/search-guard-2/tools/hash.sh -p 123456

    # 保存生成的hash密码

    添加用户及密码
    1
    2
    3
    4
    5
    6
    7
    8
    vim plugins/search-guard-5/sgconfig/sg_internal_users.yml

    sunww:
    hash: 加密后的字符串
    # password: 123456

    # 最后一行时password提示,防止忘记

    添加用户的权限
    1
    2
    3
    4
    5
    6
    7
    8
    9
    vim plugins/search-guard-5/sgconfig/sg_roles_mapping.yml

    ag_all_access:
    users:
    - admin
    - sunww

    # 添加所有权限给sunww用户

    重新将配置写入es中生效
    1
    2
    ./plugins/search-guard-5/tools/sgadmin.sh -cn es-nlp -h 192.168.124.18 -cd plugins/search-guard-5/sgconfig -ks plugins/search-guard-5/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-5/sgconfig/truststore.jks -tspass 12345678 -nhnv

    6、测试

    1
    2
    3
    4
    5
    6
    curl http://sunww:123456@127.0.0.1:9200

    curl -u sunww:123456 http://127.0.0.1:9200

    curl --user sunww:123456 http://127.0.0.1:9200

    八、x-pack为es集群配置auth

    1、要求

    es的版本必须为6.X及以上,5.X的es配置x-pack只能通过api修改密码

    1
    2
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz

    2、安装x-pack
    1
    2
    ./bin/elasticsearch-plugin install x-pack

    3、对elasticsearch、logstash、kibana分别设置登录密码(默认es用户名为elastic,logstash用户名为logstash_system,kibana用户名为kibana)
    1
    2
    ./bin/x-pack/setup-passwords interactive

    注意:

    ​ 此时的es必须时启动状态

    4、配置./config/elasticsearch.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # es6.X配置:
    http.cors.enabled: true
    http.cors.allow-origin: '*'
    http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

    # es5.X配置
    xpack.graph.enabled #设置为false以禁用X-Pack图形功能。
    xpack.ml.enabled #设置为false以禁用X-Pack机器学习功能。
    xpack.monitoring.enabled #设置为false以禁用X-Pack监视功能。
    xpack.reporting.enabled     #设置为false以禁用X-Pack报告功能。
    xpack.security.enabled      #设置为false以禁用X-Pack安全功能。
    xpack.watcher.enabled       #设置为false以禁用Watcher。

    5、测试访问
    1
    2
    curl -u elastic:password ip:port

    6、x-pack默认账号密码
    1
    2
    3
    账号:elastic
    密码:changeme

    注意:

    ​ x-pack只有一个月的使用时间,适合poc使用


    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zoubinbf@163.com

    ×

    喜欢就点赞,疼爱就打赏