毕详谈 QT 布局 QLayout::SizeConstraint 和 QSizePolicy 对 QWidget 尺寸的影响a

Elasticsearch嵌套类型nested详解

嵌套类型nested的特点

可以存储数组对象

每个对象独立存储为隐藏的子文档

嵌套类型nested和object类型的区别和应用场景

nested

每个对象独立存储为隐藏的子文档

适合存储数组

查询的时候有特定的语法 nested查询 且字段要用对象.字段名

性能略低 因为要维护子文档

object

扁平化存储,数组中的对象相同字段会合并成数组

适合存储单层的json对象

查询的时候指定对象.字段名称即可

查询性能高

嵌套类型nested如何使用

索引结构

"properties" : {

"create_time" : {

"format" : "yyyy-MM-dd HH:mm:ss Z||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss.SSS Z||yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss,SSS||yyyy/MM/dd HH:mm:ss||yyyy-MM-dd HH:mm:ss,SSS Z||yyyy/MM/dd HH:mm:ss,SSS Z||epoch_millis||yyyy-MM-dd",

"index" : true,

"type" : "date",

"doc_values" : true

},

"title" : {

"index" : true,

"type" : "text"

},

"users" : {

"type" : "nested",

"properties" : {

"sex" : {

"type" : "keyword"

},

"age" : {

"type" : "integer"

},

"username" : {

"type" : "keyword"

}

}

}

}

插入数据

POST cn_taoym_json_to_nested/_bulk

{"index":{}}

{"create_time":"2023-10-01 10:00:00","title":"第一条数据","users":[{"username":"user1","age":25,"sex":"male"}]}

{"index":{}}

{"create_time":"2023-10-02 14:30:00","title":"第二条数据","users":[{"username":"user2","age":30,"sex":"female"}]}

{"index":{}}

{"create_time":"2023-10-03 09:15:00","title":"第三条数据","users":[{"username":"user3","age":28,"sex":"male"},{"username":"user4","age":22,"sex":"female"}]}

{"index":{}}

{"create_time":"1696300800000","title":"第四条数据(时间戳格式)","users":[{"username":"user5","age":35,"sex":"male"}]}

{"index":{}}

{"create_time":"2023/10/05 16:45:00","title":"第五条数据(不同日期格式)","users":[{"username":"user6","age":27,"sex":"female"}]}

查询username为user3的数据

GET cn_taoym_json_to_nested/_search

{

"query": {

"nested": {

"path": "users",

"query": {

"term": {

"users.username": {

"value": "user3"

}

}

},

"inner_hits": {}

}

}

}

结果集

{

"took" : 2,

"timed_out" : false,

"_shards" : {

"total" : 4,

"successful" : 4,

"skipped" : 0,

"failed" : 0

},

"hits" : {

"total" : 1,

"max_score" : 0.9808291,

"hits" : [ {

"_index" : "cn_taoym_json_to_nested",

"_type" : "_doc",

"_id" : "EKfHp5gBCQbF-O0GPRhA",

"_score" : 0.9808291,

"_source" : {

"create_time" : "2023-10-03 09:15:00",

"title" : "第三条数据",

"users" : [ {

"sex" : "male",

"age" : 28,

"username" : "user3"

}, {

"sex" : "female",

"age" : 22,

"username" : "user4"

} ]

},

"inner_hits" : {

"users" : {

"hits" : {

"hits" : [ {

"_index" : "cn_taoym_json_to_nested",

"_type" : "_doc",

"_source" : {

"sex" : "male",

"age" : 28,

"username" : "user3"

},

"_id" : "EKfHp5gBCQbF-O0GPRhA",

"_nested" : {

"field" : "users",

"offset" : 0

},

"_score" : 0.9808291

} ],

"total" : 1,

"max_score" : 0.9808291

}

}

}

} ]

}

}

"inner_hits": {}的作用是将嵌套查询中复合预期的数据单独收集起来。source里面存储的是原数据,里面自然包含所有数据的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值