Elasticsearch学习(四)
来源:互联网 发布:合肥广电网络客服电话 编辑:程序博客网 时间:2024/06/10 06:29
Elasticsearch的mapping一旦创建,只能增加字段,而不能修改已经mapping的字段。如果已经在线上运行着,我们想修改mapping字段的类型或者结构,那我们该怎么做呢?如果数据量小,可以快速删除索引,并重新构建新的索引,然后再把数据同步到索引中。如果数据量非常庞大,显然这种方式存在问题。如何不停服务重建索引是我们要考虑的问题。当我们的程序访问索引库时,考虑使用别名来访问,而不要使用真正的indexName。我们可以重新再构建一个新的索引,然后在索引更完数据之后,修改之前的别名即可。
创建别名
curl -XPOST localhost:9200/_aliases -d '{ "actions": [ {"add": {"index":"test","alias": "test-aliases"}} ] }'
索引结构
{ "test" : { "aliases" : { "test-aliases" : { } }, "mappings" : { "user" : { "properties" : { "account" : { "type" : "string", "index" : "not_analyzed" }, "avatar" : { "type" : "string", "index" : "not_analyzed" }, "createdTimestamp" : { "type" : "date", "format" : "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } }, "settings" : { "index" : { "creation_date" : "1473248589616", "number_of_shards" : "5", "number_of_replicas" : "1", "uuid" : "eX_Wr45-Q3KBfoijNV_UXw", "version" : { "created" : "2020199" } } }, "warmers" : { } }}
待更新索引
新建索引test_v1(本次只修改account字段类型)。
{ "test" : { "aliases" : { "test-aliases" : { } }, "mappings" : { "user" : { "properties" : { "account" : { "type" : "integer" }, "avatar" : { "type" : "string", "index" : "not_analyzed" }, "createdTimestamp" : { "type" : "date", "format" : "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } }, "settings" : { "index" : { "creation_date" : "1473248589616", "number_of_shards" : "5", "number_of_replicas" : "1", "uuid" : "eX_Wr45-Q3KBfoijNV_UXw", "version" : { "created" : "2020199" } } }, "warmers" : { } }}
然后把数据同步到test_v1索引。
修改别名
"actions": [ {"remove": {"index":"test","alias": "test-aliases"}}, {"add": {"index":"test-v1","alias": "test-aliases"}} ] }
然后查看别名test-aliases对应的mapping,满足期望效果。
{ "test_v1" : { "aliases" : { "test-aliases" : { } }, "mappings" : { "user" : { "properties" : { "account" : { "type" : "integer" }, "avatar" : { "type" : "string", "index" : "not_analyzed" }, "createdTimestamp" : { "type" : "date", "format" : "yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } }, "settings" : { "index" : { "creation_date" : "1473305627645", "number_of_shards" : "5", "number_of_replicas" : "1", "uuid" : "DTlK4py3Tcy-2LNruLWGAw", "version" : { "created" : "2020199" } } }, "warmers" : { } }}
别名test-aliases实际指向的是test-v1。如果数据一切OK了,就可以删除原来的索引test
0 0
- Elasticsearch学习(四)
- ElasticSearch(四):查询
- ElasticSearch(四)
- ES学习(四)拼音插件分词elasticsearch-analysis-pinyin
- Elasticsearch学习笔记(四)版本控制[并发安全]
- ElasticSearch学习笔记(四)Head的安装
- Elasticsearch(四)elasticsearch复杂检索
- (四)ElasticSearch索引创建
- Elasticsearch学习笔记(四)Mapping映射
- ElasticSearch学习四:集群搭建实例
- elasticsearch学习(一)
- Elasticsearch学习(一)
- Elasticsearch学习(二)
- Elasticsearch学习(三)
- Elasticsearch学习(一)
- Elasticsearch学习笔记(二)Elasticsearch入门
- ElasticSearch学习笔记(一)ElasticSearch安装
- elasticsearch 学习博客系列<四> ES 中 index-doc 的 删除(java)
- 腾讯优测优分享 | 分布式系统测试的应用方法——场景注入测试
- Java NIO系列教程(九) ServerSocketChannel
- org.apache.catalina.loader.WebappClassLoader
- 第2周项目1 C/C++语言中函数参数传递的三种方式
- eval解析JSON字符串的一个小问题
- Elasticsearch学习(四)
- Linux程序员将成为微软的死敌
- 第一周 项目1 C++语言中函数参数传递的三种方式
- web.xml配置详解
- spring mvc常用的注解
- Lwip 保活机制 2
- iOS OPenGL 优秀网址
- Spark 1.6.1分布式集群环境搭建
- FFmpeg 移植到 Android 平台(2)