ES reindex介绍

ES数据库重建索引—Reindex详解 2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;1)用过Scroll接口吧,很慢?1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。2)每个Scroll请求,可以分成多个Slice请求,可以理解为切片,各Slice独立并行,利用Scroll重建或者遍历要快很多倍。3)如果这个slices数字很大(例如500),建议选择一个较低的数字,因为过大的slices 会影响性能。 阅读详情

参考资料:

https://gaoming.blog.youkuaiyun.com/article/details/82734667

https://www.cnblogs.com/Ace-suiyuan008/p/9985249.html

https://www.cnblogs.com/siye1989/p/11561972.html

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

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.5/java-rest-high-document-reindex.html

官方生肉传送门:

reindex的API介绍

restHighCLient相关介绍

这里ES版本为6.5.0

应用背景:

1、当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex。

2、当数据的mapping需要修改,但是大量的数据已经导入到索引中了,重新导入数据到新的索引太耗时;但是在ES中,一个字段的mapping在定义并且导入数据之后是不能再修改的,

所以这种情况下也可以考虑尝试使用Reindex。

Reindex会将一个索引的数据复制到另一个已存在的索引,但是并不会复制原索引的mapping(映射)、shard(分片)、replicas(副本)等配置信息。在引入索引模板后,符合命名规范的索引都会套用模板配置信息,这在reindex时也会十分便利,常见的按时间索引就是其中一种方式

 

A 使用:

最常见形式

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter"
  }
}

该操作会将twitter中的文档复制到new_twitter中

对应java客户端写法

ReindexRequest request = new ReindexRequest(); 
request.setSourceIndices("source1", "source2"); 
request.setDestIndex("dest");  

源索引可以设置多个,从索引source1和索引source2中复制文档至dest

返回示例:

{
  "took" : 147,
  "timed_out": false,
  "created": 120,
  "updated": 0,
  "deleted": 0,
  "batches": 1,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1.0,
  "throttled_until_millis": 0,
  "total": 120,
  "failures" : [ ]
}

_reindex会将一个索引的快照数据copy到另一个索引,默认情况下存在相同的_id会进行覆盖(一般不会发生,除非是将两个索引的数据copy到一个索引中),通过设置version_type参数可以控制这种情况,不设置该变量值或者设置为internal会让ES直接将数据“倒”进目标索引,id type相同的文档若存在多个则会直接被新值覆盖

version_type:

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "version_type": "internal"
  }
}
request.setDestVersionType(VersionType.EXTERNAL);

op_type:

将op_type设置为create时,会直接执行_reindex时在目标索引创建缺失的文档,若此时文档不存在缺失的情况则会导致版本冲突

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "op_type": "create"
  }
}
request.setDestOpType("create");

conflicts:

默认情况下,发生冲突会禁止_reindex进程,将该值设置为"proceed"可以在发生冲突时跳过当前继续执行,类似于continue

POST _reindex
{
  "conflicts": "proceed",
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "op_type": "create"
  }
}
request.setConflicts("proceed"); 

query与type:

对满足query条件的数据/type属性符合要求的数据进行reindex操作,执行方式如下:

POST _reindex
{
  "source": {
    "index": "twitter",
    "type": "_doc",
    "query": {
      "term": {
        "user": "kimchy"
      }
    }
  },
  "dest": {
    "index": "new_twitter"
  }
}
request.setSourceDocTypes("doc"); 
request.setSourceQuery(new TermQueryBuilder("user", "kimchy"));

source与type:

同上,索引twitter与blog中的type为_doc与post的文档数据将会被复制

POST _reindex
{
  "source": {
    "index": ["twitter", "blog"],
    "type": ["_doc", "post"]
  },
  "dest": {
    "index": "all_together",
    "type": "_doc"
  }
}

size:

这个参数可控制执行的文档数量,如下例子将只会复制一个文档

POST _reindex
{
  "size": 1,
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter"
  }
}
request.setSize(1);

size与sort:

通过sort与size参数的结合,我们可以只复制部分我们想要的数据,如下例子将把twitter中date字段降序排列的前10000条数据,_reindex是基于scroll操作的,sort会降低执行效率,如果可以的话,最好使用query代替sort与size的组合使用

POST _reindex
{
  "size": 10000,
  "source": {
    "index": "twitter",
    "sort": { "date": "desc" }
  },
  "dest": {
    "index": "new_twitter"
  }
}
request.addSortField("field1", SortOrder.DESC); 
request.addSortField("field2", SortOrder.ASC);

sourceBatchSize:

默认情况下,每次执行处理的文档数量为1000,修改这个参数我们可以自定义批处理的数量

POST _reindex
{
  "source": {
    "index": "source",
    "size": 100
  },
  "dest": {
    "index": "dest",
    "routing": "=cat"
  }
}
request.setSourceBatchSize(100);

script:

_reindex有些类似于_update_by_query,也是可以使用脚本的

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "version_type": "external"
  },
  "script": {
    "source": "if (ctx._source.foo == 'bar') {ctx._version++; ctx._source.remove('foo')}",
    "lang": "painless"
  }
}
request.setScript(
    new Script(
        ScriptType.INLINE, "painless",
        "if (ctx._source.user == 'kimchy') {ctx._source.likes++;}",
        Collections.emptyMap()));

脚本中的参数ctx.op 只能设置为noop或者delete,noop则什么都不做,若设置为delete,在目标索引中符合调价文档会被删除,且在响应体中会有具体的数量返回

  • _id
  • _type
  • _index
  • _version
  • _routing

这些参数都是可以被自定义的,具体使用参考官方文档

pipeline:

管道的具体用法也请查阅更多资料

POST _reindex
{
  "source": {
    "index": "source"
  },
  "dest": {
    "index": "dest",
    "pipeline": "some_ingest_pipeline"
  }
}

B. 从远程集群执行reindex

POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200",
      "username": "user",
      "password": "pass"
    },
    "index": "source",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}
request.setRemoteInfo(
    new RemoteInfo(
        "https", "localhost", 9002, null, new BytesArray(new MatchAllQueryBuilder().toString()),
        "user", "pass", Collections.emptyMap(), new TimeValue(100, TimeUnit.MILLISECONDS),
        new TimeValue(100, TimeUnit.SECONDS)
    )
); 

java写法里请求在remoteInfo中,这里不建议使用Builder构建请求体,因为请求的集群版本可能比较旧,无法识别版本较新的请求,此时手写JSON请求体是最安全可靠的

"host"值为 协议 + 主机 + 端口号,用户名和密码是可选项,如果使用了这两个参数,ES会使用基础权限链接ES节点,要使用这两个参数请确保请求方式为https,否则发送的请求中密码将会是明文的

使用这个功能还需要配置elasticsearch.yaml中的白名单,reindex.remote.whitelist,如

reindex.remote.whitelist: "otherhost:9200, another:9200, 127.0.10.*:9200, localhost:*"

URL Parameters(reindex参数设置)


    Url可选参数有pretty,refresh, wait_for_completion, wait_for_active_shards, timeout, requests_per_second.

  1、refresh
        Index API的refresh只会让接收新数据的碎片被刷新,而reindex的refresh则会刷新所有索引。

  2、wait_for_completion
   将参数设置为false则会执行一些预执行检查,启动请求,然后返回一个任务,该任务可以用于任务api来取消或获得任务的状态。Es会在.tasks/task/${taskId}中创建记录ID。

  3、wait_for_active_shards
        在Bulk API的情况下,requests_per_second可以设置在继续索引之前,控制多少个碎片的拷贝数必须是活跃的。而timeout 超时控制每个写请求等待不可用的碎片等待的时间。

  4、requests_per_second
   每秒的请求数据,显然是节流控制参数,运行设置一个正整数,设置为-1表示不进行控制。

响应体如下

{
  "took" : 639,    // 执行全过程使用的毫秒数
  "updated": 0,    // 成功修改的条数
  "created": 123,  // 成功创建的条数
  "batches": 1,    // 批处理的个数
  "version_conflicts": 2, // 版本冲突个数
  "retries": {     // 重试机制
    "bulk": 0,     // 重试的批个数
    "search": 0    // 重试的查询个数
  }
  "throttled_millis": 0, // 由于设置requests_per_second参数而sleep的毫秒数
  "failures" : [ ]  // 失败的数据
}

C. Task API 操作:

取消Reindex操作

POST _tasks/r1A2WoRbTwKZ516z6NEs5A:36619/_cancel

requests_per_second(节流限制)

每秒请求数,设置为-1则会禁止当前操作,也可以设置为其它具体数字,若提升该值则立刻生效,若减小则会在当前批次结束后生效,这样是为了防止请求超时

POST _reindex/r1A2WoRbTwKZ516z6NEs5A:36619/_rethrottle?requests_per_second=-1

在Reindex时给文档字段重命名

源索引

POST test/_doc/1?refresh
{
  "text": "words words",
  "flag": "foo"
}

执行reindex并重命名flag字段

POST _reindex
{
  "source": {
    "index": "test"
  },
  "dest": {
    "index": "test2"
  },
  "script": {
    "source": "ctx._source.tag = ctx._source.remove(\"flag\")"
  }
}

查询目标索引

GET test2/_doc/1

返回

{
  "found": true,
  "_id": "1",
  "_index": "test2",
  "_type": "_doc",
  "_version": 1,
  "_source": {
    "text": "words words",
    "tag": "foo"
  }
}

可见,flag字段在目标索引中已被重命名为tag

Slicing:

该方法会将请求拆分且并行化执行,可以提高效率,将大的请求拆分为多个小请求

1 手动拆分:

POST _reindex
{
  "source": {
    "index": "my_index_name",
    "slice": {   // 第一slice执行操作
      "id": 0,
      "max": 2
    }
  },
  "dest": {
    "index": "my_index_name_new"
  }
}
POST _reindex
{
  "source": {
    "index": "my_index_name",
    "slice": {   // 第二slice执行操作
      "id": 1,
      "max": 2
    }
  },
  "dest": {
    "index": "my_index_name_new"
  }
}

可以通过以下命令查看执行的结果:

GET _refresh
POST my_index_name/_search?size=0&filter_path=hits.total

结果如下

{
  "hits": {
    "total": 120
  }
}

2 自动并行化

如下是自动划分的5个slices,只是将需要手动划分的过程自动化处理,将一个操作拆分为多个子操作并行化处理,其他查询方式等都一样,如下:

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

3、并行化处理的特性
        同样可以使用Task API查看每个slices的子请求(child)的task状态;

        获取每个slices请求的任务状态,只返回已完成的状态;

        这些子请求单独可寻址,比如取消操作和重新配置节流操作;

        对每个slices进行重新配置节流时,会将所有未完成的操作进行比例分配;

        对每个slices进行取消操作其他所有slices都会生效;

        每个请求只拥有全部数据的部分,并且每个文档的大小会不同,大文件基本分配均匀;

        并行化处理时使用requests_per_second 或size等,可能或导致分布不均匀;

        每个子请求可能获取到不同版本或快照的源索引数据。

4、slices数量设置要求
        数量不能过大,比如500可能出现CPU问题;

        查询性能角度看,设置slices为源索引的分片的倍数是比较合适的,一倍是最有效的;

        索引性能角度看,应该随着可用资源的数量线性地扩展;

        然而索引或查询性能是否在此过程中占据主导,取决于许多因素,比如重新索引的文档和重新索引的集群。

D.按时间索引的Reindex操作

现有索引

PUT metricbeat-2016.05.30/_doc/1?refresh
{"system.cpu.idle.pct": 0.908}
PUT metricbeat-2016.05.31/_doc/1?refresh
{"system.cpu.idle.pct": 0.105}

使用脚本

POST _reindex
{
  "source": {
    "index": "metricbeat-*"
  },
  "dest": {
    "index": "metricbeat"
  },
  "script": {
    "lang": "painless",
    "source": "ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'"
  }
}

查询目标索引

GET metricbeat-2016.05.30-1/_doc/1
GET metricbeat-2016.05.31-1/_doc/1

E 随机对源索引的一个子集合进行reindex

POST _reindex
{
  "size": 10,
  "source": {
    "index": "twitter",
    "query": {
      "function_score" : {
        "query" : { "match_all": {} },
        "random_score" : {}
      }
    },
    "sort": "_score"    
  },
  "dest": {
    "index": "random_twitter"
  }
}
深入解析TI ISP SBL寄存器:数据流控制与调试实战 在嵌入式视觉系统中,图像信号处理器(ISP)负责将原始传感器数据转换为高质量图像。其内部数据流管理是系统稳定性的核心,涉及多个模块(如CCDC、预览引擎、缩放器)对系统内存的并发访问。为解决潜在的访问冲突与带宽瓶颈,TI ISP引入了共享缓冲区逻辑(SBL)作为中央数据流控制器与仲裁器。SBL通过一系列寄存器实现基于请求的仲裁机制,管理各模块的读写请求队列与状态,其技术价值在于确保了高实时性数据流的可靠性与系统性能。典型应用场景包括多路视频处理、自动对焦(AF)与自动曝光(AE)统计、以及复杂的图像缩放流水 阅读详情

相关推荐

Elasticsearch reindex api 索引重建介绍与使用细节、性能优化

Reindex会将一个索引的数据复制到另一个已存在的索引,但是并不会复制原索引的mapping(映射)、shard(分片)、replicas(副本)等配置信息。ES官方提供了_reindex这一API,相比于使用bulk重新导入数据的速度更快,其核心是做跨索引、跨集群的数据迁移。在运行_reindex操作前,应当先根据复制源索引及存储需求创建新的目标索引,报错设置mapping映射、分片、副本等。

qq_50790981的博客 3488

ES索引重建reindex详解

ES分片数变更、mapping字段变更、分词规则修改等必须重建索引,此时可通过es本身自带的reindex功能进行数据迁移,支持跨索引、跨集群的数据迁移。

东境物语 1万+

ES索引重建--使用python elasticsearch

ES索引重建–使用python elasticsearch在ES集群的使用过程中,有时会遇到需要重新建立mapping的情况,通常,我们会选择建立一个新的索引,然后将数据从原索引迁移到新索引的方式来重建需要的mapping。之前也有看到过通过Elasticsearch 的Java API 调用scan&scroll 和bulk 的方法,无奈Java 太久没有上手了~~ 所以,找了一下,发现有Pyt

sunrise_zhou的博客 6553

ES数据迁移——reindex

一、在新ES中添加白名单 在elasticsearch.yml 中添加 reindex.remote.whitelist: ["xx.xx.xx.xx:9200"] 重启新集群 二、利用kibana修改新ES参数 PUT _settings?pretty { "index.refresh_interval": -1, "index.number_of_replicas": 0 } 三、使用reindex拉取数据 1、索引不拆分,数据迁移 如果有特殊数据类型,需要提前定义好,例如

anhao的博客 3366

ES数据库索引重建 -- Reindex 大数据

首先,我们连接到ES集群,然后创建一个新的索引来存储重建后的数据。最后,我们执行索引重建操作,并使用任务监控代码来检查索引重建的进度。ES的Reindex API是一个强大的工具,可以帮助我们在ES集群中重新索引数据。源索引是我们要重建的索引,而目标索引是我们新建的索引。通过使用ES的Reindex API,我们可以轻松处理大数据集,并优化我们的ES数据库。希望我的回答能够帮助你理解如何使用ES的Reindex API进行大数据集的索引重建。在进行索引重建之前,我们需要创建一个新的索引来存储重建后的数据。

ByteHackerX的博客 332

Elasticsearch Reindex

Elasticsearch Reindex Elasticsearch 是一个流行的开源搜索引擎,用于存储、搜索和分析大量数据。然而,在某些情况下,您可能需要重新索引您的数据,例如更改映射或优化索引设置。这就是 Elasticsearch Reindex 出现的原因。 什么是 Elasticsearch Reindex? Elasticsearch Reindex 是一个用于在 Elasticse...

gitblog_00098的博客 539

J-ES-Reindex:用于重新索引 Elasticsearch 索引的 Java 命令行工具

J-ES-Reindex Java Command Line tool for reindexing Elasticsearch Indices $ java -jar J-ES-Reindex.jar --------------------------------- Elasticsearch Java Reindex tool v0.5 --------------------------------- Usage: java -jar es-java-cli.jar [OPTIONS] --------------------------------- Generic Options: --shost <source> [default localhost] --sport <source> [default 9300] --sclsname <sourc

Elasticsearch Reindex 项目教程

Elasticsearch Reindex 项目教程 1. 项目的目录结构及介绍 elasticsearch-reindex/ ├── README.md ├── bin/ │ └── reindex ├── config/ │ └── reindex.conf ├── lib/ │ └── reindex.rb └── spec/ └── reindex_spec.rb ...

gitblog_00345的博客 663

AI智能体赋能Cypress:自动化前端测试的新范式

自动化测试是现代软件工程保障质量的核心实践,其原理是通过脚本模拟用户操作,对软件功能进行验证。随着大语言模型(LLM)和智能体(Agent)技术的发展,测试自动化正迈向智能化新阶段。智能体能够理解自然语言描述的测试需求,并自主规划、执行测试步骤,这为应对前端UI频繁变更、测试用例维护成本高等挑战提供了新思路。在工程实践中,将Cypress这一流行的前端测试框架封装为智能体可调用的标准化技能(Skill),是实现这一愿景的关键。通过设计清晰的交互协议和状态管理机制,智能体可以像人类测试工程师一样“感知”页面状

weixin_33726318的博客 686

SolidWorks与Python二次开发实战:从宏录制到自动化脚本

本文详细介绍了利用Python对SolidWorks进行二次开发的实战方法。通过宏录制获取操作指令,再将其转换为Python脚本,工程师可以高效实现建模、出图等重复任务的自动化,显著提升设计效率。文章涵盖了环境搭建、代码转换、调试技巧及完整实战案例,为工程师提供了从入门到精通的完整路径。

weixin_29082143的博客 947

【ElasticSearch Reindex重建索引】

什么是Reindex? 索引重建。 Reindex演进 相比于ES 6.1,ES 6.7的Reindex为跨集群的索引重建增加了一系列SSL相关的参数配置。这些参数必须被配置到elasticsearch.yml文件里,只能依靠重启集群来生效,因此不建议频繁修改这些参数。 问题描述 源集群和目标集群都是安全模式。在Reindex操作时,源集群的Hostname在目标集群认证不通过。 [roo...

来啦,老弟~ 2835

BMS菊花链芯片怎么选?一张表对比ADI、TI、NXP五大厂家的隔离通信方案

本文深入对比了ADI、TI、NXP等五大厂商的BMS菊花链芯片隔离通信方案,涵盖技术演进、核心参数和场景化选型策略。通过实测数据和开发经验分享,帮助工程师在新能源汽车和储能系统中选择最优方案,提升通信可靠性和成本效益。

weixin_33724046的博客 432

【Elasticsearch】_reindex是啥?为啥要进行_reindex?

当你需要更改索引的映射(例如,添加新字段、修改字段类型)时,可以直接创建一个新的索引并使用 `_reindex` 将数据迁移到新的索引中。- 例如,你可能有一个按日期分片的索引,但随着时间的推移,这些索引变得难以管理,可以通过 `_reindex` 将它们合并或重新组织。4. **数据重组**:将多个源索引的数据合并到一个目标索引中,或者将一个大索引拆分成多个小索引。1. **数据迁移**:将数据从旧的索引迁移到新的索引,特别是在需要更新索引映射或设置时。### 如何使用 `_reindex`?

risc123456的博客 834

别再只盯着充电功率了!从PWM信号到PLC通信,一文读懂CCS2充电桩如何跟你家电动车“聊天”

本文深入解析了CCS2充电桩与电动汽车之间的12次关键通信交互,从硬件握手到PLC加密通信,再到充电参数动态协商与安全校验。通过详细的技术细节和实时交互逻辑,揭示了现代快充技术如何实现高效安全的能量传输,帮助用户理解充电过程中的核心技术要点与故障排查方法。

weixin_30527323的博客 141

解密美团外卖API:mtgsig和waimai_sign参数生成原理与Python实现

本文深入解析了美团外卖API中核心风控参数mtgsig和waimai_sign的生成原理与实现方法。文章详细拆解了waimai_sign作为业务数据签名、mtgsig作为请求环境签名的不同角色与生成逻辑,并通过Python代码示例演示了如何通过逆向工程、Frida动态Hook等技术手段模拟签名生成过程,为开发者理解移动端API安全机制提供了实战参考。

weixin_29325515的博客 553

elasticsearch ES数据迁移

#!/bin/bash #源es ES_HOST="192.168.137.200" ES_USER="" ES_PASSWORD='' ###获取es索引列表 index_list=`curl -u ES_USER:ES_PASSWORD -XGET "http://$ES_HOST:9200/_cat/indices?v"|awk -F' ' '{if (NR>1){print $3}}' |egrep -v "^\."` #目的es DES_HOST="192.168.137.200" DE.

会哭的雨@的博客 846

SOUL.md 人格定制的 7 个高阶技巧:Hermes Agent 精准控制 AI 行为模式

揭示 SOUL.md 的本质是行为契约而非人格设定,介绍7个围绕边界约束的高阶技巧,包括用上下文锚点(INPUT SCOPE/OUTPUT TARGET/CONSTRAINTS)替代角色描述、动态渲染锚点适配CI流程等,显著降低token消耗与人工review耗时。

weixin_42520239的博客 251

Elasticsearch多节点向单节点数据迁移(reindex方式)

使用场景:原系统使用es集群(多节点)进行数据存储,业务需要将系统部署到单台服务器上,es使用单节点模式,需要进行数据迁移。

qq_27531813的博客 51

智能 Agent 跨模态决策机制实战:多源数据融合与感知驱动行为策略设计

随着智能 Agent 应用从结构化文本处理拓展至图像识别、语音交互、传感器响应等多模态环境,其决策机制也面临从单模态语言理解向“多源感知驱动行为选择”的系统跃迁。本文聚焦跨模态输入下的 Agent 决策体系,系统性解析多源数据建模、感知融合方式、模态对齐机制、输入权重控制策略与策略引擎适配路径,进一步结合多模态提示构建、模态感知异常检测、模态优先级路由调度等工程问题进行实战拆解。通过企业级智能客服、制造车间控制、智慧医疗助手等典型案例,本文提供面向真实场景的跨模态 Agent 架构与多输入决策融合方案。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1353

C#上位机实战:手把手搭智慧工业数字孪生系统,从设备建模到实时联动全落地

字段长度(字节)说明起始标识2固定为0xAA55,用于判断数据包开始设备ID4唯一标识设备(比如1001代表电机1)数据类型10=布尔(启停),1=浮点数(转速/温度)数据长度4数据字节数(布尔1字节,浮点数4字节)数据内容N实际数据(按数据长度读取)校验位1前面所有字节的异或校验,防止数据篡改结束标识2固定为0x55AA,用于判断数据包结束。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 968

Elasticsearch 提升 Reindex 速度

elasticsearch reindex 速度提升

沐霜枫叶 1030

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Elasticsearch:跨集群数据迁移之离线迁移

跨集群数据迁移 用户在腾讯云上自建的ES集群或者在其它云厂商购买的ES集群,如果要迁移至腾讯云ES,用户可以根据自己的业务需要选择适合自己的迁移方案。如果业务可以停服或者可以暂停写操作,可以参考离线迁移的四种方案。 离线迁移 离线迁移需要先停止老集群的写操作,将数据迁移完毕后在新集群上进行读写操作。适合于业务可以停服的场景。 离线迁移大概有以下几种方式: elasticsearch-dum...

Felix_阳的博客 2132

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用Reindex迁移Elasticsearch集群数据详解(上)

使用Reindex迁移Elasticsearch集群数据详解(上)

虽非技冠群英首,愿与同道共长歌; 大鹏一日同风起,扶摇直上九万里; 1150

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Elasticsearch迁移

迁移办法的几个办法:elasticsearch-dumpsnapshotreindexlogstash 公司迁移es,因数据量不是很大,采用的方法elasticsearch-dump的方式进行数据迁移 elasticsearch-dump:主要针对数据量小的情况,而且迁出迁入服务器网络通 elasticsearch-dump 是一款开源的es迁移工具,github地址:https:/...

seapeak007的博客 634

干货 | Elasticsearch Reindex性能提升10倍+实战

干货 | Elasticsearch Reindex性能提升10倍+实战   1、reindex的速率极慢,是否有办法改善? 以下问题来自社区:https://elasticsearch.cn/question/3782 问题1:reindex和snapshot的速率极慢,是否有办法改善? reindex和snapshot的速率比用filebeat或者kafka到es的写入速率慢好几个数...

Orbita_wangtao 332
上一篇: imagemagick图片合成例子
下一篇: java基础-JSON格式
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值