假设有这样一个index。

我们发现 latency的类型声明错了,但是在es中,类型是不允许修改的。

这时候可以使用 reindex 进行操作。reindex可以理解为,把数据从一个索引中批量导入到另外一个索引中去。

新建一个索引,重新指定数据类型。

PUT /websites01
{"mappings": {"properties": {"latency" : {"type" : "short"},"province" : {"type" : "keyword"},"timestamp" : {"type" : "date"}}}
}

进行reindex操作。max_docs 可以指定最大进行处理的文档数,默认不写代表全部

POST _reindex
{"max_docs": 100,"source": {"index": "websites"},"dest": {"index": "websites01"}
}

还可以指定条件

POST _reindex
{"source": {"index": "websites","query": {"match": {"province": "江苏"}}},"dest": {"index": "websites01"}
}

操作完后,查看新的索引,发现已经存在数据,操作成功。

reindex 的操作,实际上就是 bulk 批量插入操作,所以对于数据插入的一些调优同样适合于reindex的操作进行调优

1. 修改refresh时间间隔

数据写入的过程中,会进行refresh操作,也就是数据刷到缓存中,让数据可以被读到。数据读写过程在之前的文章里面有写到过   https://blog.csdn.net/weixin_44715126/article/details/111876165。

refresh操纵默认是1s钟,也就是数据被写入到被查询中间有1s的时间间隔。这个过程会引起io操作,带来性能开销,所以如果在写入的时候,数据不要求马上可以被读到,可以将refresh的时间间隔调大,或者直接关闭refresh功能,待数据全部写完之后,再开启。这个操作对数据写入性能有明显的提高。

-1 代表直接关闭refresh 操作。

PUT /websites01/_settings
{"refresh_interval": "-1"
}

2.设置副本

es中,数据的分片数是不允许被修改的,因为涉及路由的问题,但是副本数是可以被修改的。

数据写入的同时,会同时生成副本。如果一台主机,既要写入主数据,又要写入其他数据的副本数据,这个写入性能肯定是要打折扣的,所以,副本可以在写入操作的时候进行关闭。

等数据写完之后,重新设置副本数,这时候就只需要进行简单的数据复制就可以了,也不会有倒排索引等操作。

PUT /websites/_settings
{"number_of_replicas": 0
}

3. 设置并行数。

1) reindex 操作是基于scroll滚动查询进行的,在官网中,提供了一种分片(slicing)的方法,这里的分片不是说将数据分片,而是将scroll查询分片,分成多个并行执行的任务,

默认分片数量是等于数据分片数的,这种性能应该是最优的。

POST _reindex?slices=5&refresh
{"source": {"index": "websites"},"dest": {"index": "websites01"}
}

2)在其他批量插入数据的情景下,合理设置并行数和 bulk 批量插入数据量的数目需要根据主机性能进行设置,并不是越大越好。

可以在集群中进行试验,逐步提高 bulk数量和 并行数,直到达到集群写入瓶颈,找到最优的方式进行操作。

https://www.elastic.co/guide/en/elasticsearch/reference/7.3/docs-reindex.html#docs-reindex

Elasticsearch reindex 和批量写入调优相关推荐

  1. Elasticsearch大数据量写入调优和原理解析

    前言 千万.亿级别数据批量写入ES的调优和原理解析 Elasticsearch version (bin/elasticsearch --version): 7.8 Plugins installed ...

  2. Elasticsearch索引和查询性能调优的21条建议【下】

    Elasticsearch是一款流行的分布式开源搜索和数据分析引擎,具备高性能.易扩展.容错性强等特点.它强化了Apache Lucene的搜索能力,把掌控海量数据索引和查询的方式提升到一个新的层次. ...

  3. elasticsearch(es)在用户画像业务上的应用【elasticsearch(es)性能调优】

    1.关于用户画像 用户画像是以用户为中心,从不同角度抽取信息,抽象成标签.这些标签一般都会很多,针对不同的业务需求.应用场景会刻画不同的标签.可以通过标签来圈选适合的人群,来进行精准投放.广告系统.活 ...

  4. elasticsearch原理_花几分钟看一下Elasticsearch原理解析与性能调优

    基本概念 定义 一个分布式的实时文档存储,每个字段 可以被索引与搜索 一个分布式实时分析搜索引擎 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据 用途 全文检索 结构化搜索 分 ...

  5. ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南

    文章目录 1.通用优化策略 1.1 通用最小化法则 1.2 职责单一原则 1.3 其他 2.写性能调优 2.1 基本原则 2.2 优化手段 2.2.1 增加 flush 时间间隔, 2.2.2 增加` ...

  6. Elasticsearch原理与调优

    elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 面试官:想了解应聘者之前公司接触的 ES 使用场景.规模,有没有做过比较大规模的索引设 ...

  7. Elasticsearch了解多少,说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段 。

    比如:ES集群架构13个节点,索引根据通道不同共20+索引,根据日期,每日递增20+,索引:10分片,每日递增1亿+数据,每个通道每天索引大小控制:150GB之内. 仅索引层面调优手段: 1.1.设计 ...

  8. 关于Linux性能调优之内存负载调优

    写在前面 整理一些Linux内存调优的笔记,分享给小伙伴 博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门 博文内容涉及: Linux内存管理的基本理论 寻找内存泄露的进程 内存交换空间调优 ...

  9. Elasticsearch调优实践

      背景 Elasticsearch(ES)作为NOSQL+搜索引擎的有机结合体,不仅有近实时的查询能力,还具有强大的聚合分析能力.因此在全文检索.日志分析.监控系统.数据分析等领域ES均有广泛应用. ...

最新文章

  1. 阿里云 Linux指令入门-文件与权限
  2. 一個傳統的C2C網站的用戶充值的过程
  3. Java:Java的jar包之POI的简介、安装、使用方法(基于POI将Word、Excel、PPT转换为html)之详细攻略
  4. 如何看创建媒体日期_每天约4万个网约车投诉,看AI如何接招_媒体_澎湃新闻
  5. SAP UI configuration determination的优先级
  6. python语言的编程模式_一种基于Python语言的EDA开发平台及其使用方法与流程
  7. [python]删除列表中相同的元素
  8. OpenJudge NOI 3.3 3340:RPN Calculator
  9. 卷积核权值初始化_Pytorch卷积层手动初始化权值的实例
  10. 小白学Java Web 3 Web前端之CSS基本知识2
  11. 05 | 服务编排层:Pipeline 如何协调各类 Handler ?
  12. 第四篇、Python文件处理
  13. USB协议-UVC描述符篇(三)
  14. 解决多次点击出现蓝色背景
  15. python书籍推荐django_关于Django,我想推荐这样一本书给你
  16. 如何让你的电脑声音增大500%
  17. lpc1768的gpio库函数_LPC1768之GPIO输入和输出配置基础例程
  18. PHP的apcu是什么,opcache又是什么?
  19. 机器学习实战——人脸表情识别
  20. SystemUi概述

热门文章

  1. linux c语言编程(转)
  2. RatingBar基本使用
  3. python简答题及答案查询公众号和软件_Python 抓取微信公众号账号信息的方法
  4. 计算机系古生物学,超级计算机模拟生命起源
  5. MySQL 实现无数据插入有数据更新
  6. Mac解决JAVA_HOME问题
  7. python数据分析知识_python数据分析:商品数据化运营(上)——知识点
  8. 利用java swing编写一个简易的计算器,实现了括号,优先级,三角函数,阶乘等功能
  9. 阿里云服务器相关操作
  10. Java中内存溢出和内存泄露详解