zoukankan      html  css  js  c++  java
  • elasticsearch7.0安装及配置优化

    简单讲ES开箱即用,不用任何配置也能玩转搜索引擎;以下内容是根据易企秀线上实际使用场景进行的安装和配置,支持冷热数据分离

    1、安装

    • Linux 环境下载安装包
    curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
    
    
    • 解压
    tar -xvf elasticsearch-7.0.0-linux-x86_64.tar.gz
    
    • 因es7.0自带了java环境 ,所以不需要再单独下载JDK,进入bin目录直接启动即可
    ./elasticsearch -d  # -d 意思是后台运行,需要注意的是es要求非Root用户启动
    

    2、安装IK

    • 下载
    wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip
    
    • 在plugins目录下创建ik目录,并将elasticsearch-analysis-ik-7.0.0.zip解压到该目录
    mkdir plugins/ik
    
    unzip elasticsearch-analysis-ik-7.0.0.zip ik
    
    • 重启es集群

    3、优化

    es的安装和配置是非常轻量级的,为满足多种不同的应用场景,底层提供多种数据结构支持,并做了大量的默认配置优化,部分配置针对具体的用户使用场景可能是冗余的,甚至可能造成性能的下降,需要根据实际业务场景做适当取舍,我们结合自身使用场景做了如下优化(文章中有疏漏或不正确的地方也欢迎点评指正)。

    • 环境配置
    sudo swapoff -a
    # 禁用swapping,开启服务器虚拟内存交换功能会对es产生致命的打击
    vm.max_map_count
    # 在/etc/sysctl.conf文件中找到该参数,修改 655300 为 262144后 执行sysctl -p,不然启动时会报值太小
    

    常用的配置在两个文件里,分别是 elasticsearch.yml 和 jvm.options(配置内存)

    • jvm.options
      jvm.options主要是进行内存相关配置,官方建议分配给es的内存不要超出系统内存的50%,预留一半给Lucene,因为Lucene会缓存segment数据提升检索性能;内存配置不要超过32g,如果你的服务器内存没有远远超过64g,那么不建议将es的jvm内存设置为32g,因为超过32g后每个jvm对象指针的长度会翻倍,导致内存与cpu的开销增大。
    -Xms10g
    -Xmx10g
    
    • elasticsearch.yml

    基础配置:

    cluster.name
    # 配置es集群名称,相同名称的集群会自动识别
    node.name
    # es7.0集群节点名称会自动获取本机hostname,如果不是多实例部署,可不配置该项
    path.data
    # 指定数据存放目录,多目录逗号分隔
    path.logs
    # 指定日志存放目录
    network.host
    # 指定本机ip地址
    http.port
    # 指定http协议端口 ,多实例部署时需要修改
    transport.tcp.port
    # 指定tcp协议端口,多实例部署时需要修改
    cluster.initial_master_nodes: [" "]
    # 指定主节点列表,需要在每个节点上配置该参数
    discovery.zen.ping.unicast.hosts: []
    # 广播节点
    

    优化配置:

    bootstrap.memory_lock: true
    #设置为true锁住内存,当服务混合部署了多个组件及服务时,应开启此操作,允许es占用足够多的内存。
    indices.breaker.request.limit: 10%
    #设置单个request请求的内存熔断限制,默认是jvm堆的60%(es7.0引入了新的内存熔断机制,会智能判断,规避OOM)。
    index.merge.scheduler.max_thread_count: 1
    #设置segment合并时占用的线程数,配置线程数越多对磁盘io消耗就越大(SSD忽略)。
    indices.queries.cache.size:20%
    #query请求可使用的jvm内存限制,默认是10%。
    indices.requests.cache.size:2%
    #查询request请求的DSL语句缓存,被缓存的DSL语句下次请求时不会被二次解析,可提升检索性能,默认值是1%。
    indices.fielddata.cache.size:30%
    #设置字段缓存的最大值,默认无限制。
    node.attr.box_type: hot
    #用来对索引数据进行冷热分离,需要注意的是 setting 中也要进行相关配置 "index.routing.allocation.require.box_type": "hot"


    作者:_江边城外_
    链接:https://www.jianshu.com/p/119c2d0574d9
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    JavaScript学习(二)
    javaScript学习(一)
    CSS学习(一)
    HTML学习(一)
    ES之node机器配置elasticsearch.yml
    ES之master机器配置elasticsearch.yml
    jenkins--前端依赖之 node
    jenkins--邮件插件配置
    JsonPath提取表达式
    this关键字的作用
  • 原文地址:https://www.cnblogs.com/ExMan/p/11351296.html
Copyright © 2011-2022 走看看