读《深入理解Elasticsearch》点滴-对象类型、嵌套文档、父子关系
一、对象类型
1、mapping定义文件
"title":{
"type":"text"
},
"edition":{
"type":"object",
"properties":{
"isbn":{
"type":"text"
}
}
}
2、索引数据
"title":"title_1",
"edition":[
{
"isbn":"",
"circulation":50000
},
{
"isbn":"",
"circulation":2000
}
]
3、等效于
"title":"title_1",
"edition"
{
"isbn":["",""],
"circulation":[,]
}
4、总结一下:
object类型只有在很简单的情景中好用,如“一对一“的父子环境当中;或者不存在跨字段找找等情况是,仅需要在单个字段中搜索而不需要关联多个字段时,或者不需要在对象中搜索。
二、嵌套文档
1、mapping定义
"title":{
"type":"text"
},
"edition":{
"type":"nested",
"properties":{
"isbn":{
"type":"text"
} }
}
2、总结
- 普通查询,嵌套文档被自动过滤掉,不会被搜索到或展示出来。这在Lucene中被称为块链接(block join)。出于性能方面的考虑,嵌套文档与主文档保存在一个索引块中
- 主文档与嵌套文档在索引期间同时存储的,又称为“索引期连接(index-time join)。
- 当主文档和嵌套文档都很小,且主文档易于获取时,这种强关联关系并不会造成什么问题。如果这些文档很大,关联双方之一变化频繁,那么重建另外一部分文档变得不太现实里。
- 另外就是如果一个嵌套文档属于多个主文档时,问题会变得非常棘手。
三、parent-child 关系
1、最大的优势,父子关系双方的文档是相互独立的,又称为”查询期连接(query-time join)。
2、代价就是更复杂的查询及更慢的查询性能
3、第二个优势:父子关系适用于大型应用及多节点场景
4、子文档检索并不强制在父文档上下文中进行
5、一个异常的例子:
父数据有1000条,通过hash存储到不同的分片上;
子数据有1000条,所有子数据的对应同一条父数据;
1000条子数据都将存储到同一个分片上。
6、如果某些分文档有多个子文档,会导致文档在分片之间的不均匀分布
读《深入理解Elasticsearch》点滴-对象类型、嵌套文档、父子关系的更多相关文章
- Elasticsearch压缩索引——lucene倒排索引本质是列存储+使用嵌套文档可以大幅度提高压缩率
注意:由于是重复数据,词法不具有通用性!文章价值不大! 摘自:https://segmentfault.com/a/1190000002695169 Doc Values 会压缩存储重复的内容. 给定 ...
- Elasticsearch配置详解、文档元数据
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch配置文件详解 a. 在上面博客中,我们已经安装并且成功 ...
- ElasticSearch查询 第二篇:文档更新
<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...
- ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理
分布式文档存储 ES分布式特性 屏蔽了分布式系统的复杂性 集群内的原理 垂直扩容和水平扩容 真正的扩容能力是来自于水平扩容–为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中 ES集群特点 ...
- ElasticSearch权威指南学习(文档)
什么是文档 在Elasticsearch中,文档(document)这个术语有着特殊含义.它特指最顶层结构或者根对象(root object)序列化成的JSON数据(以唯一ID标识并存储于Elasti ...
- 运用 Range 对象处理 Word 文档内容
运用 Range 对象处理 Word 文档内容 在所有 Office 应用程序中,Microsoft Word 可能是应用最广泛的应用程序,它还经常在自定义 Office 解决方案中扮演重要的角色 ...
- MongDb添加嵌套文档
想添加嵌套文档,就需要创建2个实体类.如下图 usermodel.Student = student; 其中Student的类型就是StudentModel: 第一个实体类 ...
- ElasticSearch(二):文档的基本CRUD与批量操作
ElasticSearch(二):文档的基本CRUD与批量操作 学习课程链接<Elasticsearch核心技术与实战> Create 文档 支持自动生成文档_id和指定文档_id两种方式 ...
- elasticsearch查询篇索引映射文档数据准备
elasticsearch查询篇索引映射文档数据准备 我们后面要讲elasticsearch查询,先来准备下索引,映射以及文档: 我们先用Head插件建立索引film,然后建立映射 POST http ...
随机推荐
- 2013-2014 ACM-ICPC Pacific Northwest Regional Contest B.Bones’s Battery
题意略. 思路: 这个题目求的是第一个可行解,由此想到用二分试探的方式来解决. 现在讲讲怎么验证该解是否合理: 先用floyd求出两两之间的最短距离. dp[ i ][ j ]表示,i 到 j 至少要 ...
- Delphi - 互斥对象下实现系统的单例模式
使用CreateMutex函数创建互斥对象 利用Windows系统函数CreateMutex(),找出当前系统是否已经存在指定进程的实例,如果没有则创建一个互斥体. CreateMutex函数原型如下 ...
- hive 四种表,分区表,内部,外部表,桶表
Hive四大表类型内部表.外部表.分区表和桶表 一.概述 总体上Hive有四种表:外部表,内部表(管理表),分区表,桶表.分别对应不同的需求.下面主要讲解各种表的适用情形.创建和加载数据方法. 二.具 ...
- Linux Centos虚拟机扩容(/dev/mapper/centos-root)
1:.首先查看我们的根分区大小是多少 df -h 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 18G 1.1G 17G 6% / devt ...
- 堆、栈、内存分配、==、equals、hashcode详解(转载)
问题的引入: 问题一:String str1 = "abc";String str2 = "abc";System.out.println(str1==str2 ...
- 2015北京区域赛 Xiongnu's Land
Wei Qing (died 106 BC) was a military general of the Western Han dynasty whose campaigns against the ...
- ASP.NET Core结合Nacos来完成配置管理和服务发现
目录 前言 Nacos的简介 启动Nacos 配置管理 服务发现 写在最后 前言 今年4月份的时候,和平台组的同事一起调研了一下Nacos,也就在那个时候写了.net core版本的非官方版的SDK. ...
- python实现持久化存储,操作表格,时间戳
import xlrd,xlwt,pickle,time,datetime book = xlrd.open_workbook("练习.xlsx") sheet1 = book.s ...
- c语言实现双色球和大乐透
头文件: #include<stdio.h> #include <stdlib.h> #include<string.h> #include <time.h& ...
- Apache JMeter (二)性能测试 入门实例
上一节我们说了关于Jmeter环境的配置,接下来讲一个测试的实例. 1.运行Jmeter 进入Jmeter程序所在目录,运行"bin/jmeter.bat" Jmeter支持中文, ...