zoukankan      html  css  js  c++  java
  • ES容易忽视的集群配置

    一 前言

    目前生产系统由Solr转ES了,在这边就记录下在使用过程中容易忽视的配置吧,其实我也是才用,如果有什么错误的地方,多指正。

    二、配置

    1、ES的段合并是限速设置

    默认是20MB/s ,如果是SSD磁盘建议增大:
    ```
    PUT /_cluster/settings
    {
    "persistent" : {
    "indices.store.throttle.max_bytes_per_sec" : "100mb"
    }
    }
    ```
    如果临时导入数据先可以不要合并,再打开的时候合并:
    ```
    PUT /_cluster/settings
    {
    "transient" : {
    "indices.store.throttle.type" : "none"
    }
    }
    ```
    导入数据完成none改成merge。

     2、fieldData 数据缓存限制

    ES配置中提到的FieldData指的是字段数据。当排序(sort),统计(aggs)时,ES把涉及到的字段数据全部读取到内存(JVM Heap)中进行操作。相当于进行了数据缓存,提升查询效率,而且默认是不清除的,容易造成OOM。

    ![网上借来图](https://upload-images.jianshu.io/upload_images/1737506-22b96a5bd4aec67d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    参考网上说明:
    ***上图是ES的JVM Heap中的状况,可以看到有两条界限:驱逐线 和 断路器。当缓存数据到达驱逐线时,会自动驱逐掉部分数据,把缓存保持在安全的范围内。当用户准备执行某个查询操作时,断路器就起作用了,缓存数据+当前查询需要缓存的数据量到达断路器限制时,会返回Data too large错误,阻止用户进行这个查询操作。 ***

    ```
    PUT _cluster/settings
    {
    "persistent" :
    {
    "indices.breaker.fielddata.limit":"50%",
    "indices.breaker.request.limit":"40%",
    "indices.breaker.total.limit":"70%"
    }
    }
    ```

    ###3、去掉操作索引匹配符号
    ```
    PUT /_cluster/settings
    {
    "persistent" : {
    "action.destructive_requires_name":true
    }
    }

    ```
    禁止使用通配符,禁止的目的是为了误删除。

    默认情况下,可以通过以下方法删除所有的索引:
    ```
    curl -XDELETE http://localhost:9200/_all
    curl -XDELETE http://localhost:9200/*
    ```
    _all ,* 通配所有的索引 。
    如果需要一次删除多个索引 可以通过将两个索引名都写进去,中间用逗号分隔。
    比如:
    ``` curl -XDELETE http://localhost:9200/twitter,my_index ```

     3其他说明 

       ES关闭一个索引的速度非常快,尝试过关闭一个1T大小的索引,耗时只要十几秒,打开也差不多的时间,只是在打开的时候回存在着集群瞬间变红,因为分片的分配需要过程。

  • 相关阅读:
    js少写if语句
    框架大集合
    new运算符工作原理(new运算符的伪码实现)
    原始数据类型和引用数据类型
    关于input 的选中,自定义input[type="checkbox"]样式
    css伪类与伪元素
    js 的function为什么可以添加属性
    工具,如何去掉百度编辑器 ueditor 元素路径、字数统计等
    多种框架好库的混合使用
    js预编译的四部曲
  • 原文地址:https://www.cnblogs.com/seaspring/p/9340792.html
Copyright © 2011-2022 走看看