mapping:mapping就好比sql建表指定的数据类型
实例:
PUT /new_bank
{
"mappings": {
"properties": {
"account_number": {
"type": "long"
},
"address": {
"type": "text"
},
"age": {
"type": "integer"
},
"balance": {
"type": "long"
},
"city": {
"type": "text"
},
"email": {
"type": "text"
},
"employer": {
"type": "text"
},
"firstname": {
"type": "text"
},
"gender": {
"type": "keyword"
},
"lastname": {
"type": "text"
},
"state": {
"type": "text"
}
}
}
}
2.es新增字段
PUT /test_index
{
"mappings": {
"properties": {
"name":"111"
}
}
}
3.新增字段
PUT /test_index/_mapping
{
"properties":{
"age1":{
"type":"long"
}
}
}
4.es不支持更新字段,如果要修改字段类型,那么需要新建index来进行转移
以下有两种写法,这两种写法有什么区别:
要知道es数据组成的话分为
index -> sql的database
type -> sql的表
document ->数据
在es6之后删除了type,为什么呢?
在关系型数据库中table是独立的(独立存储),但es中同一个index中不同type是存储在同一个索引中的(lucene的索引文件),因此不同type中相同名字的字段的定义(mapping)必须一致。不同类型的“记录”存储在同一个index中,会影响lucene的压缩性能,如果是有设置type那么使用第一种否则使用第二种
post _reindex
{
"source":{
"index":"老索引"
},
“dest":{
"index":"新索引"
}
}
2. 将老索引的type数据进行迁移
post _reindex
{
"source":{
"index":"oldIndexName",
"type":"老索引_type的值"
}
"dest":{
"index::"newIndex"
}
}
}