转载来源 :Elasticsearch笔记九之优化 :https://blog.csdn.net/ty4315/article/details/52531169
优化从索引片段,内存设置,副本,分片,日志等方面入手。

1:索引片段

Es运行时会生成很多索引片段,执行查询时会打开这些索引片断。系统会限制打开索引片断的个数一旦超过这个个数限制就无法打开索引片断。我们可以通过命令来查看更改索引片断的限制数量。
索引片断位置
/usr/local/elasticsearch-1.4.4/data/elasticsearch/nodes/0/indices/shb01/0/index

ulimit –a 查看索引片断数量,默认是1024

ulimit -n 32000 更改索引片断数量

如果索引片断太多会影响效率我们可以在es集群空闲时对索引片断进行合并。合并可以通过curl命令和java来实现。
Curl

curl -XPOST http://192.168.79.131:9200/shb01/_optimize?max_num_segments=1

java

/*** 合并索引片段 */@Testpublic void testOptimize(){transportClient.admin().indices().prepareOptimize("shb01", "shb02").setMaxNumSegments(1).get();}

curl命令可以在linux中建立一个定时任务每天执行一次,同样java代码也可以建立一个定时器来执行。

2:内存设置

前介绍过es集群有两种启动方式
第一种是bin目录下bin/ elasticsearch
打开/usr/local/elasticsearch-1.4.4/bin/elasticsearch.in.sh文件修改文件中的两个参数,将 ES_MIN_MEM=256m和ES_MAX_MEM=1g的值改成一样一般设置为可用内存的60%,这样可以避免频繁的内存交换。
另一种是searchwrapper插件方式启动bin/service/ elasticsearch start
打开/usr/local/elasticsearch-1.4.4/bin/service/修改set.default.ES_HEAP_SIZE=1024

另外在es的配置文件中修改bootstrap.mlockall: true,这样禁止内存交换。

3:分片设置

3:分片设置
Es将数据存储在多个分片中那么分片的数量就影响到了查询效率。
分片数少了导致分片过大打开一个太大的分片太慢,分片数量过多查询时会打开过多的分片而且还有多台服务器之间的通信问题。所以过多过少都不行,一般情况下分片数量维持在5~20个之间单个分片最大不要超过20G。我们可以根据实际的业务来评估分片数量。
比如我有5个分片,预计3个月会产生100G的数据,那么我们可以每3个月当5个分片达到20G时就重新建立一个索引库。

4:副本设置

以设置2~3个副本即可。
另外当初次建立索引库时需要大量倒入数据时我们可以临时将副本改为0不让其同步数据以减轻服务器压力,倒入完成后通过mappings来更改副本数,这种方式只针对当前索引库后期添加的索引库仍会读取elasticsearch.yml中的副本个数,es重启后仍然会保持之前mappings修改的副本数。

5:删除文档

在es中删除一个文档后不会立即从硬盘中删除只会标记这个文档被删除,lucene会产生一个.del文件,而在检索过程中这个文件还会参与检索只不过在最后会被过滤掉,这样其实也会影响效率,我们可以定期删除这些文件,同合并索引片断一样可以通过curl和java两种方式来执行。
Curl
curl -XPOST http://192.168.79.131:9200/_optimize?only_expunge_deletes=true
Java

 /*** 删除.del文件 */@Testpublic void testOptimizeDel(){transportClient.admin().indices().prepareOptimize("shb01", "shb02").setOnlyExpungeDeletes(true).get();}

6:日志输出

可以调整es的日志级别,es的默认级别是trace,超过500ms就属于慢查询就需要打印日志,一般改为info或error级别。
日志文件/usr/local/elasticsearch-1.4.4/config/logging.yml
ndex.search.slowlog: TRACE, index_search_slow_log_file 将TRACE改为INFO
或者更改elasticsearch.yml文件中对于慢查询的设置
index.search.slowlog.threshold.query.trace: 500ms

7:单态获取es对象

在java代码中使用单实例的方式来获取org.elasticsearch.client.transport.TransportClient对象。

8:es极速查询

Es将数据存储在不同的分片中,根据文档id通过内部算法得出要将文档存储在哪个分片上,所以在查询时只有指定在对应的分片上进行查询就可以实现基于es的极速查询,但是前提是你需要知道数据在那个分片上。
还可以通过路由参数来设置数据存储在同一个分片中,setRouting(“”)

/*** 路由参数 */@Testpublic void testRoutingInsert(){String source = "{\"name\":\"中山大学l\",\"num\":1800}";IndexResponse indexResponse = transportClient.prepareIndex(index, "stu").setRouting("student").setSource(source).get();System.out.println(indexResponse.getVersion());}/*** 路由参数 */@Testpublic void testRoutingSearch(){SearchResponse searchResponse = transportClient.prepareSearch(index).setTypes("stu").setQuery(QueryBuilders.matchAllQuery())//.setPreference("_shards:0,1,2").setRouting("student", "teacher").get();SearchHits hits = searchResponse.getHits();SearchHit[] hits2 = hits.getHits();for(SearchHit h : hits2){System.out.println(h.getSourceAsString());}}

9:去掉mapping中_all域

参考链接 :
Elasticsearch笔记九之优化 :https://blog.csdn.net/ty4315/article/details/52531169

ELK下Elasticsearch优化相关推荐

  1. ELK下elasticsearch 性能调优

    ES系统性能调优 从三个方面来优化服务的性能: 索引效率优化 查询效率优化 JVM 配置优化 注意 :所有的修改都可以在elasticsearch.yml里面修改,也可以通过api来修改.推荐用api ...

  2. ELK下Elasticsearch如何关掉服务

    1.使用head插件 找到想关掉的节点进行关停 2.使用命令kill杀掉服务器的ES进程即可 1.查找ES进程 ps -ef | grep elastic 2.杀掉ES进程 kill -9 2382( ...

  3. Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台

    Centos7下使用ELK(Elasticsearch + Logstash + Kibana)搭建日志集中分析平台 日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散在 ...

  4. elasticsearch优化总结

    一. 硬件环境选择: 如果有条件,尽可能使用SSD硬盘, 不错的CPU.ES的厉害之处在于ES本身的分布式架构以及lucene的特性.IO的提升,会极大改进ES的速度和性能. 二.系统拓朴设计: ES ...

  5. 企业级日志分析系统ELK(Elasticsearch , Logstash, Kibana)

    企业级日志分析系统ELK(Elasticsearch , Logstash, Kibana) 前言 一.ELK概述 1.ELK日志分析系统 2.ELK日志处理特点 3.Elasticsearch概述 ...

  6. 企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建

    目录 一.ELK概述 1.ELK日志分析系统 2.ELK中日志处理步骤 二.Elasticsearch介绍 1.Elasticsearch的基础核心概念 2.分片和副本 三.LogStash概述 1. ...

  7. Elasticsearch优化——搜索速度优化

    Elasticsearch优化--搜索速度优化 文章目录 Elasticsearch优化--搜索速度优化 1. 为文件系统cache预留足够的内存 2. 使用更快的硬件 3. 文档模型 4. 预索引数 ...

  8. Elasticsearch 优化分析

    Elasticsearch 优化分析 Elasticsearch 是一个分布式RESTful 风格的搜索和数据分析引擎广泛用于搜索引擎 日志分析 安全监测等领域在大数据量和高并发的场景下Elastic ...

  9. django+haystack+elasticsearch优化查询效率

    django+haystack+elasticsearch优化查询效率 背景 安装环境 配置 1.在settings中的配置 2.在子应用下创建索引文件 3.指定索引模板文件 4.使用命令创建索引 索 ...

最新文章

  1. 厉害了!不重启JVM,替换掉已经加载的类
  2. OSI第七层:应用层功能及介绍
  3. 高产来自“长期主义”:智源学者朱军谈ICLR 2020 全球发文第二的经验法则
  4. 使用element ui 组件的时候,如果使用两个或多个按钮在同一个单元格内,按钮会竖着排列,但是不能够对齐怎么解决?
  5. 性能压测工具选型对比
  6. Microsoft.AspNet.Identity 自定义使用现有的表—登录实现
  7. mapperscan注解_SpringBoot 遗忘后的简单快速回忆之环境搭建与常见注解
  8. pcb设计单点接地示意图_4种PCB设计中的接地方式解析
  9. linux多线程学习(五)——信号量线程控制
  10. postgresql数据库的 to_date 和 to_timestamp 将 字符串转换为时间格式
  11. p语言是python吗-Python是纯的面向对象语言吗?
  12. 中标麒麟linux系统安装打印机_安装国产Linux中标麒麟操作系统教程
  13. 安卓获取wifi列表_大家好,我是来给你家 WiFi 提速的
  14. 程序设计c语言高速公路收费标准,高速公路收费系统c语言课程设计报告分解.docx...
  15. [BJOI2019]勘破神机
  16. 应届毕业生转行新媒体运营指南:学习新媒体运营的三大路径
  17. Python实现文字转语音功能
  18. 天然气故障代码大全_天然气故障码表
  19. 华硕笔记本台式机专用系统 GHOSTXPSP3 v2012.12
  20. 微信小程序连接蓝牙ble教程(目录)

热门文章

  1. python 画蝴蝶_python画蝴蝶曲线图的实例
  2. python绘制并列的条形图的方法_如何并排绘制具有相同X坐标的条形图('dodged')...
  3. 日本人的幼儿教育,看一看还是有意…
  4. c语言 0x12ed,C语言基本数据类型及运算题库有答案.doc
  5. android 工作总结,Android项目的个人总结
  6. jenkins docker 自动部署 构建_Docker_Jenkins自动部署项目
  7. 从 0 开始搭建一个技术博客,私藏干货~
  8. CentOS7部署Nginx
  9. CentOS7.x编译安装nginx,实现HTTP2
  10. 记录一些js面试题以及解法