elasticsearch 更改已有字段的数据类型

elasticsearch 更改已有字段的数据类型

【问题背景】:
在elasticsearch中,如果你没有指定字段映射,那么,elasticsearch将对为指定数据类型的字段做动态映射。
例如,当入库的前期数据字段result为数值型时,elasticsearch将其映射为long类型;当入库的后期数据字段result为字符串时,会报数据类型错误。

更改索引blog中的动态映射字段priority数据类型:由long更改为keyword

一:查看原有字段动态映射类型

查看mapping
命令:GET http://localhost:9002/index[索引名]/_mapping

只能创建index时手动建立mapping,或者新增field mapping,但是不能update field mapping

{
	"blog": {
		"mappings": {
			"article": {
				"properties": {
					"content": {
						"type": "text",
						"fields": {
							"keyword": {
								"type": "keyword",
								"ignore_above": 256
							}
						}
					},
					"counter": {
						"type": "long"
					},
					"id": {
						"type": "text",
						"fields": {
							"keyword": {
								"type": "keyword",
								"ignore_above": 256
							}
						}
					},
					"priority": {
						"type": "long"
					},
					"tags": {
						"type": "text",
						"fields": {
							"keyword": {
								"type": "keyword",
								"ignore_above": 256
							}
						}
					},
					"title": {
						"type": "text",
						"fields": {
							"keyword": {
								"type": "keyword",
								"ignore_above": 256
							}
						}
					}
				}
			}
		}
	}
}

二:更改指定字段类型,新建索引blog_new

命令:PUT http://localhost:9002/blog_new

{
	"mappings": {
		"article": {
			"properties": {
				"content": {
					"type": "text",
					"fields": {
						"keyword": {
							"type": "keyword",
							"ignore_above": 256
						}
					}
				},
				"counter": {
					"type": "long"
				},
				"id": {
					"type": "text",
					"fields": {
						"keyword": {
							"type": "keyword",
							"ignore_above": 256
						}
					}
				},
				"priority": {
					"type": "keyword"
				},
				"tags": {
					"type": "text",
					"fields": {
						"keyword": {
							"type": "keyword",
							"ignore_above": 256
						}
					}
				},
				"title": {
					"type": "text",
					"fields": {
						"keyword": {
							"type": "keyword",
							"ignore_above": 256
						}
					}
				}
			}
		}
	}
}

三:将blog数据reindex到blog_new

命令:POST http://localhost:9002/_reindex

{
  "source": {
    "index": "blog"
  },
  "dest": {
    "index": "blog_new"
  }
}

四:删除索引blog

命令:DELETE http://localhost:9002/blog

五:将blog_new数据reindex到blog

命令:POST http://localhost:9002/_reindex

{
  "source": {
    "index": "blog_new"
  },
  "dest": {
    "index": "blog"
  }
}

六:删除索引blog_new

命令:DELETE http://localhost:9002/blog_new

  • 11
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
ElasticSearch能够支持的索引字段数量和索引大小是有限制的,如果索引的字段数量或索引大小过大,会影响搜索性能。因此,减少索引的字段数据和索引大小是非常重要的。 以下是一些减少索引的字段数据和索引大小的方法: 1. 选择合适的字段进行索引:只对必要的字段进行索引,可以减少索引的大小和搜索的时间。不需要搜索的字段可以不进行索引,以减少索引的大小。 2. 优化字段数据类型ElasticSearch支持多种数据类型,不同的数据类型会对索引的大小有影响。优化字段数据类型,可以减少索引的大小。例如,使用整数类型代替字符串类型可以减少索引的大小。 3. 索引数据的分片:将索引数据分成多个分片,可以减少单个分片的大小,从而提高搜索性能。同时,将分片存储在多个节点上,可以提高数据的可靠性和可用性。 4. 压缩索引数据:ElasticSearch支持在索引和搜索时使用数据压缩。压缩可以减少磁盘和网络带宽的使用,从而提高性能。 5. 关闭不必要的索引功能:ElasticSearch支持多种索引功能,例如,停用分析器、停用自动补全等功能可以减少索引的大小和搜索的时间。 综上所述,减少索引的字段数据和索引大小是非常重要的,可以提高搜索性能。以上是一些减少索引的字段数据和索引大小的方法,希望对您有所帮助。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值