我们知道es在字段的mapping建立后就不可再次修改mapping的值。在我们实际的情况下有些时候就是需要修改mapping的值,解决方案就是重新构建索引数据。
方式一 :
使用索引别名,创建另外一个索引、使用scroll滚屏搜索插入数据、等等,(网上有很多这样的例子,略)
方式二:(参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html)
使用es的 _reindex api进行解决。
注意: _reindex获取的索引的快照的数据,也就是说在重建索引的过程中可能会丢失部分数据
索引重建的演示步骤:
1、创建oldindex
2、给索引创建别名
3、想oldindex中插入9条数据
4、创建新的索引newindex
5、重建索引
6、实现不重启服务索引的切换
------------------------------------------------------------------------------------------------------------------------------
1、创建oldindex
curl -XPUT "http://192.168.99.1:9200/oldindex" -d' { "settings": { "number_of_shards": 1, "number_of_replicas": 1 }, "mappings": { "product" : { "properties": { "name" : { "type": "text" }, "price" : { "type": "double" } } } } }'
2、给索引创建别名
curl -XPUT "http://192.168.99.1:9200/oldindex/_alias/alias_oldindex"
3、想oldindex中插入9条数据
curl -XPOST "http://192.168.99.1:9200/alias_oldindex/product/_bulk" -d' {"create":{"_id":1}} {"name":"name 01","price":1} {"create":{"_id":2}} {"name":"name 02","price":2} {"create":{"_id":3}} {"name":"name 03","price":3} {"create":{"_id":4}} {"name":"name 04","price":4} {"create":{"_id":5}} {"name":"name 05","price":5} {"create":{"_id":6}} {"name":"name 06","price":6} {"create":{"_id":7}} {"name":"name 07","price":7} {"create":{"_id":8}} {"name":"name 08","price":8} {"create":{"_id":9}} {"name":"name 09","price":9} '
4、创建新的索引newindex
curl -XPUT "http://192.168.99.1:9200/newindex" -d' { "settings": { "number_of_shards": 1, "number_of_replicas": 1 }, "mappings": { "product" : { "properties": { "name" : { "type": "keyword" }, "price" : { "type": "double" } } } } }'
5、重建索引
_source中的意思是只将旧索引的price字段的数据插入到新索引中。
6、实现不重启服务索引的切换
curl -XPOST "http://192.168.99.1:9200/_aliases" -d' { "actions": [ { "remove": { "index": "oldindex", "alias": "alias_oldindex" } }, { "add": { "index": "newindex", "alias": "alias_oldindex" } } ] }'
以上就完成了索引重建的过程,并实现不停止服务就可以应用上新建后的索引。(前提:程序中使用的是索引的别名)
更多复杂的用法,参考网址:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html
相关推荐
Elasticsearch reindex 修改索引定义、设置、备份索引数据、跨集群数据迁移,reindex使用介绍
另外索引创建之后,数据库数据如有改动,索引无法联动修改,ElasticSearch没有相关功能,我们只能根据修改频率重建索引,基本上没有实时性可言。 db-river-es正是为了解决这些问题而生。 项目介绍 名称:es-...
Elasticsearch索引旋转器 一个使您能够安全地轮转索引而无需停机的最终用户的库。 我为什么要用这个? 在许多情况下,Elasticsearch用作临时数据存储,用于获取结构化或关系数据并使其快速搜索该数据。 通常,这是...
Django Elasticsearch DSL Django Elasticsearch DSL是一个软件包,它允许在Elasticsearch中索引Django模型。 它是作为的薄包装而构建的,因此您可以使用elasticsearch-dsl-py团队开发的所有功能。 您可以在查看完整...
前言 第1章 Elasticsearch入门 1 1.1 Elasticsearch是什么 1 1.1.1 Elasticsearch的历史 2 1.1.2 相关产品 3 1.2 全文搜索 3 1.2.1 Lucene介绍 4 1.2.2 Lucene倒排索引 4 1.3 基础知识 6 1.3.1 Elasticsearch术语及...
使用和 v3管理并不断重建您的ElasticSearch索引。 Capistrano::Chewy gem在部署流程中添加了仅条件修改的Chewy索引的自动有条件重置以及已删除索引文件的删除,因此您无需手动进行。 此外,它还增加了使用远程...
索引重建 Reindex API 索引别名实现零停机 检索关键字包含特殊字符 保留字消义 检索关键字个数太多报错 权限控制&监控 中文姓名检索不准确 参考(Copy)内容 简介 ElasticSearch是一个基于Lucene(路(第一声)森(第...
技术选型 springboot + mybatis + bootstrap + jqgrid + ajax + elasticsearch(用到在整合) + redis(用到在整合) ...基于数据库中数据重建es索引库 c.删除所有文档 d.关键词记录 e.远程词典操作
使用游标批量创建索引,已将系统所有的表用游标循环出来,进行处理。并且自动重建索引。
通过Delius的更改使Elastic Search(ES)试用期索引保持最新 在需要时重建索引而不会中断 建筑与设计 违规更新 此服务订阅缓刑犯事件,特别是OFFENDER_CHANGED事件 接收到此事件后,将通过community-api检索最新的...
ES的mapping重命名修改,详细说明了生产中不可以删除原有的mapping情况下,如何实现不停机,重建索引的mapping文件,指定数据类型
分片简介 primary shard:主分片,提升系统存储容量,通过主分片将数据分布在所有节点上,主分片可以将一个索引的...分片是Elasticsearch中的最小工作单元,本质上是一个Lucene Index。在Lucene中,单个倒排索引文件被
索引重建该服务维护在代码中称为INDEX_A和INDEX_B两个索引prison-search-index-a和prison-search-index-b 。 在正常运行中,这些索引中的一个将处于“活动”状态,而另一个则处于Hibernate状态且未使用。 当我们准备...
弹性搜索示例 rake db:create && rake db:migrate rake db:seed将生成大约 1000 篇文章并索引... >> Article.__elasticsearch__.create_index! force: true => {"acknowledged"=>true} >> Article.import => 0 >>
中间件包括ShardingSphere分库分表的封装, Redis的封装, Kafka的封装, ... db2es-admin:对db2es-client进行管控(重建索引,数据对比,数据修复等功能) db2es-client:以异步的方式,将mysql数据库中的增量数据
本文档是整套的elk学习资源,内容详细 ES5.0新版本特性 1.支持lucene 6.x:索引...4、新增reindex:对数据进行重建 进行异步重建提高索引的性能 5.新增ingest节点 直接在es中进行简单的过滤 不需要在logstash里面过滤
节点表达React隔离启动器 ... 这意味着我们可以充分利用和而不损害页面索引或关闭javascript的用户(尝试!)。 这也意味着第一页加载非常快-服务器同时发送页面所需的所有css和html,并且react异步加载。 附带内联到
1 如果坏块的对象是索引,重建索引 2 使用备份来进行恢复 3 使用10231事件,或者DBMS_REPAIR.SKIP_CORRUPT_BLOCKS过程,让oracle跳过坏块,然后用exp导出表和使用CREATE TABLE AS创建新表。 4 尝试使用SQL脚本将...
也可以自己搭建 Elasticsearch 并通过配置进行集成 后续会对搜索功能进行加强,实现条件过滤,结果高亮等,敬请期待。 计划中的特性 信任系统 通过历史数据对用户进行分级提权,让用户从浏览者逐步变为参与者...