mapping复杂数据类型以及object类型数据底层结构

mapping复杂数据类型以及object类型数据底层结构

课程大纲

1、multivalue field

{ “tags”: [ “tag1”, “tag2” ]}

建立索引时与string是一样的,数据类型不能混 即 tags中对应的数组的类型是一样的

2、empty field

null,[],[null]

对于空串的处理

3、object field

PUT /company/employee/1
{
“address”: {
​ “country”: “china”,
​ “province”: “guangdong”,
​ “city”: “guangzhou”
},
“name”: “jack”,
“age”: 27,
“join_date”: “2017-01-01”
}

address:object类型

{
“company”: {
​ “mappings”: {
​ “employee”: {
​ “properties”: {
​ “address”: {
​ “properties”: {
​ “city”: {
​ “type”: “text”,
​ “fields”: {
​ “keyword”: {
​ “type”: “keyword”,
​ “ignore_above”: 256
​ }
​ }
​ },
​ “country”: {
​ “type”: “text”,
​ “fields”: {
​ “keyword”: {
​ “type”: “keyword”,
​ “ignore_above”: 256
​ }
​ }
​ },
​ “province”: {
​ “type”: “text”,
​ “fields”: {
​ “keyword”: {
​ “type”: “keyword”,
​ “ignore_above”: 256
​ }
​ }
​ }
​ }
​ },
​ “age”: {
​ “type”: “long”
​ },
​ “join_date”: {
​ “type”: “date”
​ },
​ “name”: {
​ “type”: “text”,
​ “fields”: {
​ “keyword”: {
​ “type”: “keyword”,
​ “ignore_above”: 256
​ }
​ }
​ }
​ }
​ }
​ }
}
}

对于这样的数据类型

{
“address”: {
​ “country”: “china”,
​ “province”: “guangdong”,
​ “city”: “guangzhou”
},
“name”: “jack”,
“age”: 27,
“join_date”: “2017-01-01”
}

在es 中会转换成这样的存储方式

{
​ “name”: [jack],
​ “age”: [27],
​ “join_date”: [2017-01-01],
​ “address.country”: [china],
​ “address.province”: [guangdong],
​ “address.city”: [guangzhou]
}

包含多个对象的数据类型

{
​ “authors”: [
​ { “age”: 26, “name”: “Jack White”},
​ { “age”: 55, “name”: “Tom Jones”},
​ { “age”: 39, “name”: “Kitty Smith”}
​ ]
}

在ES中会从 行式 存储转为 列式 存储

{
​ “authors.age”: [26, 55, 39],
​ “authors.name”: [jack, white, tom, jones, kitty, smith]
}

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • © 2020 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信