`

elasticsearch的索引重建

阅读更多

     我们知道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

  • 大小: 152.3 KB
0
0
分享到:
评论

相关推荐

    ES-重建索引 - 副本.doc

    Elasticsearch reindex 修改索引定义、设置、备份索引数据、跨集群数据迁移,reindex使用介绍

    es-index-db:一种从数据库创建Elasticsearch索引的简便方法,并在数据库更新时实时更新索引

     另外索引创建之后,数据库数据如有改动,索引无法联动修改,ElasticSearch没有相关功能,我们只能根据修改频率重建索引,基本上没有实时性可言。  db-river-es正是为了解决这些问题而生。 项目介绍 名称:es-...

    elasticsearch-index-rotator:安全轮换Elasticsearch索引,而无需停机给最终用户

    Elasticsearch索引旋转器 一个使您能够安全地轮转索引而无需停机的最终用户的库。 我为什么要用这个? 在许多情况下,Elasticsearch用作临时数据存储,用于获取结构化或关系数据并使其快速搜索该数据。 通常,这是...

    django-elasticsearch-dsl:这是一个允许在Elasticsearch中使用elasticsearch-dsl-py索引django模型的软件包

    Django Elasticsearch DSL Django Elasticsearch DSL是一个软件包,它允许在Elasticsearch中索引Django模型。 它是作为的薄包装而构建的,因此您可以使用elasticsearch-dsl-py团队开发的所有功能。 您可以在查看完整...

    Elasticsearch 技术解析与实战.zip

    前言 第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术语及...

    capistrano-chewy:使用Capistrano进行耐嚼任务和Elasticsearch索引管理

    使用和 v3管理并不断重建您的ElasticSearch索引。 Capistrano::Chewy gem在部署流程中添加了仅条件修改的Chewy索引的自动有条件重置以及已删除索引文件的删除,因此您无需手动进行。 此外,它还增加了使用远程...

    word源码java-ElasticSearch-Simple-Share:组内关于ElasticSearch的简单使用说明内容分享

    索引重建 Reindex API 索引别名实现零停机 检索关键字包含特殊字符 保留字消义 检索关键字个数太多报错 权限控制&监控 中文姓名检索不准确 参考(Copy)内容 简介 ElasticSearch是一个基于Lucene(路(第一声)森(第...

    基于springboot+mybatis+redis+es+bootstrap的搜索实战项目

    技术选型 springboot + mybatis + bootstrap + jqgrid + ajax + elasticsearch(用到在整合) + redis(用到在整合) ...基于数据库中数据重建es索引库 c.删除所有文档 d.关键词记录 e.远程词典操作

    批量创建索引

    使用游标批量创建索引,已将系统所有的表用游标循环出来,进行处理。并且自动重建索引。

    缓刑罪犯搜索索引器

    通过Delius的更改使Elastic Search(ES)试用期索引保持最新 在需要时重建索引而不会中断 建筑与设计 违规更新 此服务订阅缓刑犯事件,特别是OFFENDER_CHANGED事件 接收到此事件后,将通过community-api检索最新的...

    替换索引.txt

    ES的mapping重命名修改,详细说明了生产中不可以删除原有的mapping情况下,如何实现不停机,重建索引的mapping文件,指定数据类型

    Elasticsearch分片本质与集群的故障转移

    分片简介 primary shard:主分片,提升系统存储容量,通过主分片将数据分布在所有节点上,主分片可以将一个索引的...分片是Elasticsearch中的最小工作单元,本质上是一个Lucene Index。在Lucene中,单个倒排索引文件被

    囚犯搜索:囚犯搜索

    索引重建该服务维护在代码中称为INDEX_A和INDEX_B两个索引prison-search-index-a和prison-search-index-b 。 在正常运行中,这些索引中的一个将处于“活动”状态,而另一个则处于Hibernate状态且未使用。 当我们准备...

    elasticsearch-workshop:完整工作示例 Ruby on Rails 应用程序,具有弹性搜索集成(ES 模板)

    弹性搜索示例 rake db:create && rake db:migrate rake db:seed将生成大约 1000 篇文章并索引... >> Article.__elasticsearch__.create_index! force: true => {"acknowledged"=>true} >> Article.import => 0 >>

    middleware

    中间件包括ShardingSphere分库分表的封装, Redis的封装, Kafka的封装, ... db2es-admin:对db2es-client进行管控(重建索引,数据对比,数据修复等功能) db2es-client:以异步的方式,将mysql数据库中的增量数据

    ELK学习资料

    本文档是整套的elk学习资源,内容详细 ES5.0新版本特性 1.支持lucene 6.x:索引...4、新增reindex:对数据进行重建 进行异步重建提高索引的性能 5.新增ingest节点 直接在es中进行简单的过滤 不需要在logstash里面过滤

    node-express-react-iso-starter:使用同构React的nodeexpress Web应用程序的入门包

    节点表达React隔离启动器 ... 这意味着我们可以充分利用和而不损害页面索引或关闭javascript的用户(尝试!)。 这也意味着第一页加载非常快-服务器同时发送页面所需的所有css和html,并且react异步加载。 附带内联到

    数据库项目组日常运维及应急故障处理手册.docx

    1 如果坏块的对象是索引,重建索引 2 使用备份来进行恢复 3 使用10231事件,或者DBMS_REPAIR.SKIP_CORRUPT_BLOCKS过程,让oracle跳过坏块,然后用exp导出表和使用CREATE TABLE AS创建新表。 4 尝试使用SQL脚本将...

    Java开源的下一代社区平台Symphony.zip

    也可以自己搭建 Elasticsearch 并通过配置进行集成 后续会对搜索功能进行加强,实现条件过滤,结果高亮等,敬请期待。 计划中的特性 信任系统 通过历史数据对用户进行分级提权,让用户从浏览者逐步变为参与者...

Global site tag (gtag.js) - Google Analytics