关键词不能为空

位置:白城汽车新闻网 > 汽车资讯 > ES系列:集群、索引、搜索配置优化方案-es系列

ES系列:集群、索引、搜索配置优化方案-es系列

作者:白城汽车新闻网
日期:2020-02-10 17:06:36
阅读:

集群优化

  • 配置服务器open file的最大数量(使用ulimit -a 查看)
  • 配置启动内存,修改bin/elasticsearch 文件,增加 ES_HEAP_SIZE=4g(最大不可超过32G)
  • 配置 禁止物理内存交换 config/elasticsearch.yml bootstrap.memory_lock: true
  • 禁用监控 marvel.agent.enabled(很耗CPU)
  • elasticsearch.yml文件,写与读的线程池的配置

#---------------------------------thread pool-----------------------------------

threadpool.index.type: fixed

thread_pool.index.size: 500

thread_pool.index.queue_size: 2000

threadpool.bulk.type: fixed

threadpool.bulk.size: 100

threadpool.bulk.queue_size: 500

  • 各司其职,配置只作为master或者data的节点,还可以配置客户端节点
ES系列:集群、索引、搜索配置优化方案

索引优化

  • 修改分片和副本的数量,太大太小都不合适(index.number_of_shards )
  • 定时对索引进行合并优化 _forcemerge接口
  • 删除已标记为删除的文档:curl -XPOST localhost:9200/uploaddata/_forcemerge?max_num_segments=1
  • curl -XPOST localhost:9200/uploaddata/_forcemerge?only_expunge_deletes=true
  • 设置存储压缩方式,在速度与存储空间之间平衡(index.codec)
  • 设置刷新时间间隔 index.refresh_interval,时间增长可以增加索引速度
  • 设置日志策略index.translog.durability,降低数据flush到磁盘的频率。如果对数据丢失有一定的容忍,可以打开async模式
  • 宕机之后,设置分片重分配时间index.unassigned.node_left.delayed_timeout
  • 后台merge的线程数 index.merge.scheduler.max_thread_count merge
  • 每台机器上的分片数量index.routing.allocation.total_shards_per_node(注意,不可设置为:( pri_shard_num + rep_shard_num) / data_node_num)
  • 对于经常有取topN的需求,可设置按照某字段排序,避免全数据扫描:

"settings" : { "index" : { "sort.field" : "timestamp", "sort.order" : "desc" } }

  • 对于不需要聚合的字段,可以设置doc_value为false,节省内存空间
  • 对于不需要搜索的字段,可以设置index 为false
  • 某个字段既不需要搜索,也不需要聚合,设置enabled=false
  • 对于不需要计算评分的字段,可以设置norms为false
  • 对于某个文档某个字段有异常值,但在该字段异常是,又需要保留其他字段可设置该字段ignore_malformed为true
  • 对于不需要获取原始数据,只需要排序或者计算的情况下,将_source设置为false
  • 必要时可以按照字段,将一个索引拆分成多个索引(对于可枚举的字段)
  • 可以根据使用场景自定义分片规则(使用路由规则)
  • 避免不平衡分片
ES系列:集群、索引、搜索配置优化方案

搜索优化

  • 调整分片数目
  • 能用过滤语境的,尽量不用搜索语境
  • 增加刷新时间
  • 减小后台merge的线程数目
  • 合理的配置缓存
ES系列:集群、索引、搜索配置优化方案

相关文章:

es系列:集群分布式架构及原理

ES系列:elasticsearch的功能及Top 5大应用场景

白城汽车新闻网一直为网友的需求而努力相关推荐