前文回顾
之前讲完了探索ES-对象和嵌套对象(三),今天继续深入讲讲父子结构。
嵌套对象
上篇有讲到嵌套对象可以解决数组对象不能关联查询的问题。
但是,嵌套对象也有一些不足之处。
因为ES的文档是不可修改的,所以每次修改了子对象,都需要重新创建一个新的文档对象。这种实现方式会导致增大修改的开销。
那是不是有一种方式可以在修改子对象的时候,不会影响到父对象呢?
下面介绍的父子对象可以解决这个问题。
父子对象
我们先来看一下官网的例子。先来看一下mapping。
PUT my_index
{
"mappings": {
"_doc": {
"properties": {
"my_join_field": {
"type": "join",
"relations": {
"question": "answer"
}
}
}
}
}}
复制代码
从上面的mapping中可以看到父子节点的需要join类型来进行关联。与join类型同级别的还有relations属性,设置了父节点的名称和子节点的名称。
让我们看看父节点是如何插入的。
PUT my_index/_doc/1?refresh
{
"text": "This is a quest