概述
简述
JSON格式毋庸置疑是使用比较广泛的数据格式。如今,我们使用ES怎么存储JSON格式的数据呢?又怎么查询呢?
Object类型
ES使用object数据类型来存储json格式的数据。下面我们来试验一下:
- 我们使用ES存储下面的json字符串
{
"dynasty":"Qing",
"emperor":"Qianlong",
"woman":[
{
"name":"YanXi",
"age":"27",
"address":"YanXiGong"
},
{
"name":"XianFei",
"age":"37",
"address":"ChengQianGong"
},
{
"name":"HuangHou",
"age":"35",
"address":"ChangQingGong"
}
]
}
- 创建mapping
{
"mappings": {
"_doc": {
"properties": {
"dynasty": {
"type": "keyword"
},
"emperor": {
"type": "text"
},
"woman": {
"properties": {
"age": { "type": "integer" },
"name": {"type": "text"},
"address": {"type": "text"}
}
}
}
}
}
}
- 插入数据
{
"dynasty": "Qing",
"emperor": "Qianlong",
"woman": [
{
"name": "YanXi",
"age": "27",
"address": "YanXiGong"
}
,
{
"name": "XianFei",
"age": "37",
"address": "ChengQianGong"
}
,
{
"name": "HuangHou",
"age": "35",
"address": "ChangQingGong"
}
]
}
- 查看数据
- 查询
纳尼??为啥查出来了呢??我用的是must的呀,并且YanXi没有37岁呀
- 解释
这是因为我们上面传入的json文档都存为了一条文档中了,上面的插入其实被转化为:
{
"dynasty": "Qing",
"emperor": "Qianlong",
"woman.name":["YanXi", "XianFei", "HuangHou"],
"woman.age":["27", "37", "35"],
"woman.address":["YanXiGong", "ChengQianGong", "ChangQingGong"]
}
怎么办呢?!!那就是Nested类型的用武之地了
Nested
- mapping
{
"mappings": {
"_doc": {
"properties": {
"dynasty": {
"type": "keyword"
},
"emperor": {
"type": "text"
},
"woman": {
"type": "nested",
"properties": {
"age": {
"type": "integer"
},
"name": {
"type": "text"
},
"address": {
"type": "text"
}
}
}
}
}
}
}
- 插入数据
{
"dynasty": "Qing",
"emperor": "Qianlong",
"woman": [
{
"name": "YanXi",
"age": "27",
"address": "YanXiGong"
}
,
{
"name": "XianFei",
"age": "37",
"address": "ChengQianGong"
}
,
{
"name": "HuangHou",
"age": "35",
"address": "ChangQingGong"
}
]
}
- 查询
- 查询
不过NESTED类型有限制的,嵌套数量不能多于50个
先写到这里了,有问题进QQ群630300475 聊一聊
最后
以上就是虚心小蜜蜂为你收集整理的Elasticsearch6.3.1存储JSON文档 -- object和NESTED的全部内容,希望文章能够帮你解决Elasticsearch6.3.1存储JSON文档 -- object和NESTED所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复