[转载]Elasticsearch索引重建(Rebuild)

From:http://blog.csdn.net/changong28/article/details/38491185

索引重建(Rebuild)

索引创建后,你可以在索引当中添加新的类型,在类型中添加新的字段。但是如果想修改已存在字段的属性(修改分词器、类型等),目前ES是做不到的。如果确实存在类似这样的需求,只能通过重建索引的方式来实现。但想要重建索引,请保证索引_source属性值为true,即存储原始数据。索引重建的过程就是将原来索引数据查询回来入到新建的索引当中去,为了重建过程不影响客户端查询,创建索引时请使用索引别名,例如现在需要将index1进行重建生成index2,index1给客户端提供的别名为index1_alias,完整步骤如下:

1、  创建索引索引index1,使用index1_alias作为别名指定。

1 curl –XPUT localhost:9200/index1 –d‘{  “aliases”:{  “index1_alias”:{}  }  }’

2、  根据新配置创建索引index2

例如:

1 curl–XPUT localhost:9200/index2 –d ‘{  “settings”:{  “index_number_of_shards”:10  }  }’

3、  将旧索引数据导入到新索引中

将索引index1中的数据导入到index2当中,可以将index1原始数据划范围导入到index2中。为了提高查询性能,查询类型选择scan方式。例如:

部分1:

 1  GET/ old_index / _search ? search_type = scan & scroll = 1m {
 2    "query": {
 3         "range": {
 4             "date": {
 5                 "gte":"2014-01-01",
 6                 "lt":"2014-02-01"
 7             }
 8         }
 9    },
10    "size": 1000
11 }

部分2:

 1 GET/ old_index / _search ? search_type = scan & scroll = 1m {
 2    "query": {
 3         "range": {
 4             "date": {
 5                 "gte": "2014-02-01",
 6                 "lt": "2014-03-01"
 7             }
 8         }
 9    },
10    "size": 1000
11 }

使用上述方式查询原始数据,然后调用ES批量bulk接口索引文档。

4、  索引切换

为了保证系统不停机的情况下进行索引切换,通过修改别名的方式进行修改,即删除index1别名index1_alias,给index2增加index1_alias别名,具体如下:

 1 curl –XPUT localhost:9200/_alias ‘{
 2 “action”:[
 3            “remove:{
 4                     “index”:”index1”,
 5                     “alias”:”index1_aias”
 6 }”,
 7            “add:{
 8                     “index”:”index2”,
 9                     “alias”:”index1_aias”
10 }”
11
12 ]
13 }’

5、  删除旧索引

1 curl–XDELETE localhost:9200/index1

时间: 2024-10-11 05:23:07

[转载]Elasticsearch索引重建(Rebuild)的相关文章

PLSQL_性能优化系列15_Oracle Index Rebuild索引重建

2014-10-04 BaoXinjian 一.摘要 索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DBA也是遵循这一准则来重建索引,那就是Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引.近来Oracle也提出了一些与之相反的观点,就是强烈建议不要定期重建索引.本文是参考了1525787.1并进行相应描述. 1. 重建索引的理由 Oracle的B树索引随着时间的推移变得不平衡(误解) 索

PLSQL_性能优化系列13_Oracle Index Rebuild索引重建

2014-10-04 BaoXinjian 一.摘要 索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DBA也是遵循这一准则来重建索引,那就是Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引.近来Oracle也提出了一些与之相反的观点,就是强烈建议不要定期重建索引.本文是参考了1525787.1并进行相应描述. 1. 重建索引的理由 Oracle的B树索引随着时间的推移变得不平衡(误解) 索

Elasticsearch入门教程(三):Elasticsearch索引&映射

原文:Elasticsearch入门教程(三):Elasticsearch索引&映射 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbirdbest/article/details/79213163 索引概念简介 通常说的索引有两种词性,名称和动词. 动词索引indexing,索引一个文档,表示把一个文档存储到索引Index里,可以用来查询和检索,es采用倒排索引 名词索引index,

SQL Server ->> Online Index Rebuilding(联机索引重建)

SQL Server的Enterprise Edition是支持联机索引重建的.那么联机索引重建是怎么工作的以及对我们的查询有什么影响呢? 既然是联机,SQL Server保持了现有索引对于用户的可用,也就意味着它还不会去修改现有索引以及它相关联的统计数据.那么可以猜想下它的做法其实和SQL Server下Switch Partition就有相似的做法了 -- 最小化数据离线时间.它应该是先生成索引和统计数据,这个时候新的索引和统计数据肯定都分配好了object_id,内部肯定是已经可见了,只是

SQL2008R2的 遍历所有表更新统计信息 和 索引重建

---------------------------------------------- [2.以下是更新统计信息] DECLARE UpdateStatisticsTables CURSOR READ_ONLY FOR SELECT sst.name, Schema_name(sst.schema_id) FROM sys.tables sst WHERE sst.TYPE = 'U' DECLARE @name VARCHAR(80), @schema VARCHAR(40) OPEN

SQL Server下实现利用SQL Server Agent Job对索引重建实现Balance Load

昨天工作中遇到这样一个场景,有个项目需要把某台服务器下所有的表和索引都启用数据压缩(data_compression=page),已经启用了的表和索引就不需要再压缩一次了.统计一下后发现要运行的REBUILD INDEX代码多达上万条,而整个服务器上的所有需要压缩的数据库对象大小加起来估计接近1TB.这种情况下如果把所有工作都交给一条脚本来完成,估计整个周末都跑不完.那么我们的想法就是用多个SQL Server Agent Job来做完成这个任务,分配单位是表(也就是说把同一张表的所有索引重建任

SQL Server中是否可以准确获取最后一次索引重建的时间?

原文:SQL Server中是否可以准确获取最后一次索引重建的时间? 在SQL Server中,我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢?  答案是我们无法准确的找到索引的创建时间.最后一次索引重组时间,最后一次索引重建的时间. 其实就目前SQL Server的各个版本而言,还没有一个系统表或DMV视图有保存索引创建的时间,索引重建的时间.索引重组的时间.但是有些方法可以间接得到最后一次索引重

SQL Server查看索引重建、重组索引进度

原文:SQL Server查看索引重建.重组索引进度 相信很多SQL Server DBA或开发人员在重建或重组大表索引时,都会相当郁闷,不知道索引重建的进度,这个对于DBA完全是一个黑盒子,对于系统负载非常大的系统或维护窗口较短的系统,你会遇到一些挑战.例如,你创建索引的时候,很多会话被阻塞,你只能取消创建索引的任务.查看这些索引维护操作的进度.预估时间对于我们有较大的意义,需要根据这个做一些决策.下面我们来看看看看如何获取CREATE INDEX.ALTER INDEX REBUILD.AL

MySQL如何进行索引重建操作?

在MySQL数据库中,没有类似于SQL Server数据库或Oracle数据库中索引重建的语法(ALTER INDEX ... REBUILD),那么在MySQL数据库中,是否有什么方式重建索引呢? 在官方文档中"2.11.10 Rebuilding or Repairing Tables or Indexes"中,提到下面三种方式可以Rebuild Index ·         Dump and Reload Method ·         ALTER TABLE Method