ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

elasticsearch(四) index 跨集群迁移

2022-01-10 22:32:07  阅读:302  来源: 互联网

标签:index reindex buffer shard elasticsearch timeout 集群


项目一:elasticsearch 迁移方案

elasticsearch 索引迁移

  1. 查看参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.15/docs-reindex.html

  2. 添加需要迁移的es集群白名单到 目的 es配置文件elasticsearch.yml

    reindex.remote.whitelist: "otherhost:9200, another:9200, 127.0.10.*:9200, localhost:*"
    
  3. kibana 开发工具界面使用_reindex,重新创建索引。或者用curl命令都行

    #kibana 界面运行,数据量过大,下面的配置
    POST _reindex?wait_for_completion=false
    {和下面相同的内容}
    
    
    #使用curl 命令
    curl -X POST "localhost:9200/_reindex?pretty" -H 'Content-Type: application/json' -d'
    {
      "source": {
        "remote": {
          "host": "http://otherhost:9200",
          "username": "user",
          "password": "pass"
        },
        "index": "my-index-000001",
        "size": 10,			
        "socket_timeout": "1m",
        "connect_timeout": "10s",
        "query": {						#查询匹配到的文档,只创建这些文档,不设置就复制所有索引
          "match": {
            "test": "data"
          }
        }
      },
      "dest": {
        "index": "my-new-index-000001"
      }
    }
    
    size 10 #从远程服务器重新索引使用默认最大大小为 100mb 的堆上缓冲区。如果远程索引包含非常大的文档,您将需要使用较小的批量大小。下面的示例将批量大小设置10 为非常非常小。
    "socket_timeout": "1m",
    "connect_timeout": "10s"
    还可以使用socket_timeout字段设置远程连接上的套接字读取超时,以及使用字段设置连接超时 connect_timeout。两者都默认为 30 秒。此示例将套接字读取超时设置为一分钟,将连接超时设置为 10 秒:
    
  4. GET _tasks/task_id 根据执行后返回的task_id 查询 reindex 执行情况。

reindex 提升效率:

Reindex支持Sliced Scroll以并行化重建索引过程。 这种并行化可以提高效率,并提供一种方便的方法将请求分解为更小的部分。

sliced原理(from medcl)

1)用过Scroll接口吧,很慢?如果你数据量很大,用Scroll遍历数据那确实是接受不了,现在Scroll接口可以并发来进行数据遍历了。
2)每个Scroll请求,可以分成多个Slice请求,可以理解为切片,各Slice独立并行,利用Scroll重建或者遍历要快很多倍。

elasticsearch 全部数据迁移

直接复制es设置的path.data后面的目录 到目标es

项目二:elasticsearch 写入性能优化

  1. 增加refresh间隔

    默认的refresh间隔是1s,用index.refresh_interval参数可以设置,这样会其强迫es每秒中都将内存中的数据写入磁盘中,创建一个新的segment file。正是这个间隔,让我们每次写入数据后,1s以后才能看到。但是如果我们将这个间隔调大,比如30s,可以接受写入的数据30s后才看到,那么我们就可以获取更大的写入吞吐量,因为30s内都是写内存的,每隔30s才会创建一个segment file。

  2. index buffer

    如果我们要进行非常重的高并发写入操作,那么最好将index buffer调大一些,indices.memory.index_buffer_size,这个可以调节大一些,设置的这个index buffer大小,是所有的shard公用的,但是如果除以shard数量以后,算出来平均每个shard可以使用的内存大小,一般建议,但是对于每个shard来说,最多给512mb,因为再大性能就没什么提升了。es会将这个设置作为每个shard共享的index buffer,那些特别活跃的shard会更多的使用这个buffer。默认这个参数的值是10%,也就是jvm heap的10%,如果我们给jvm heap分配10gb内存,那么这个index buffer就有1gb,对于两个shard共享来说,是足够的了。

https://blog.csdn.net/lm324114/article/details/105028701/

标签:index,reindex,buffer,shard,elasticsearch,timeout,集群
来源: https://www.cnblogs.com/fengfengyang/p/15786325.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有