推广

elasticsearch父子文档处理(join)

iseeyu2年前 (2024-02-21)推广121

父子关系映射

2、添加父文档数据

此处添加的是 (plan) 数据。

PUT /plan_index/_doc/plan-001
{
  "plan_id": "plan-001",
  "plan_name": "四月计划",
  "creator": "huan",
  "create_time": "2021-04-07 16:27:30",
  "plan_join": {
    "name": "plan"
  }
}

PUT /plan_index/_doc/plan-002
{
  "plan_id": "plan-002",
  "plan_name": "五月计划",
  "creator": "huan",
  "create_time": "2021-05-07 16:27:30",
  "plan_join": "plan"
}

注意️:

1、如果是创建父文档,则需要使用 plan_join 指定父文档的关系的名字(此处为plan)。

2、plan_join为创建索引的 mapping时指定join的字段的名字。

3、指定父文档时,plan_join的这2种写法都可以。

3、添加子文档

PUT /plan_index/_doc/act-001?routing=plan-001
{
  "act_id":"act-001",
  "act_name":"四月第一个活动",
  "creator":"huan.fu",
  "plan_join":{
    "name":"activity",
    "parent":"plan-001"
  }
}

PUT /plan_index/_doc/book-001?routing=plan-001
{
  "book_id":"book-001",
  "book_name":"四月读取的第一本书",
  "creator":"huan.fu",
  "plan_join":{
    "name":"book",
    "parent":"plan-001"
  }
}

PUT /plan_index/_doc/book-002?routing=plan-001
{
  "book_id":"book-002",
  "book_name":"编程珠玑",
  "creator":"huan.fu",
  "plan_join":{
    "name":"book",
    "parent":"plan-001"
  }
}

PUT /plan_index/_doc/book-003?routing=plan-002
{
  "book_id":"book-003",
  "book_name":"java编程思想",
  "creator":"huan.fu",
  "plan_join":{
    "name":"book",
    "parent":"plan-002"
  }
}

# 理论上 comment 的父文档是 book ,但是此处routing使用 plan 也是可以的。
PUT /plan_index/_doc/comment-001?routing=plan-001
{
  "comment_id":"comment-001",
  "comment_name":"这本书还可以",
  "creator":"huan.fu",
  "plan_join":{
    "name":"comments",
    "parent":"book-001"
  }
}

PUT /plan_index/_doc/comment-002?routing=plan-001
{
  "comment_id":"comment-002",
  "comment_name":"值得一读,棒。",
  "creator":"huan.fu",
  "plan_join":{
    "name":"comments",
    "parent":"book-001"
  }
}

注意️:

子文档的创建

1、子文档(子孙文档等)需要和父文档使用相同的路由键。

2、需要指定父文档的id。

3、需要指定join的名字。

4、查询文档

1、根据父文档id查询它下方的子文档

需求:返回父文档id是plan-001下的类型为book的所有子文档。

GET /plan_index/_search
{
  "query":{
    "parent_id": {
      "type":"book",
      "id":"plan-001"
    }
  }
}

根据父文档id查询子文档

2、has_child返回满足条件的父文档

需求:返回创建者(creator)是huan.fu,并且子文档最少有2个的父文档。

GET /plan_index/_search
{
  "query": {
    "has_child": {
      "type": "book",
      "min_children": 2,  
      "query": {
        "match": {
          "creator": "huan.fu"
        }
      }
    }
  }
}

has_child返回满足条件的父文档

3、has_parent返回满足父文档的子文档

需求:返回父文档(book)的创建者是huan.fu的所有子文档

GET /plan_index/_search
{
  "query": {
    "has_parent": {
      "parent_type": "book",
      "query": {
        "match": {
          "creator":"huan.fu"
        }
      }
    }
  }
}

has_parent返回满足父文档的子文档

五、Nested Object 和 join 对比

Nested Object join (Parent/Child)
1、文档存储在一起,读取性能高 1、父子文档单独存储,互不影响。但是为了维护join的关系,需要占用额外的内容,读取性能略差。
2、更新父文档或子文档时,需要更新整个文档。 2、父文档和子文档可以单独更新。
3、适用于查询频繁,子文档偶尔更新的情况。 3、适用于更新频繁的情况,且子文档的数量远远超过父文档的数量。

六、参考文档

1、join数据类型

2、has child查询

3、has parent查询

4、parent id查询

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57576.html

相关文章

老字号品牌转型,这个品牌交出了满意的答案

老字号品牌转型,这个品牌交出了满意的答案

先来看看最近很火的月饼礼盒改造大赛各个网友脑洞大开八仙过海终于“化腐朽为神奇”▼▲Tiny Moon^_^小钺-悬挂花盆▲柴郡喵sylvia-小夜灯▲一只屁屁喵-手帐装饰画▲幸运娃娃-皮影舞台▲会飞的鱼-拼图装饰摆件看上去是不是还挺有意思的?每个消费者都可以化身为“Tony...

网站优化好做吗?十大优化禁忌详解。

网站优化好做吗?十大优化禁忌详解。

搜索引擎是大多数网站的主要流量来源,所以是每个网站的必修课。网站优化必须有专业知识,否则优化不够,效果不理想,过度优化,会受到搜索引擎的惩罚。下面小编与你分享些网站搜素引擎优化的禁忌,一起来看看吧。 1、关键词堆积如山。我们都应该知道这一点,但它很难堆叠。我认为段的关键词不能使用两次以上...

B站广告开户流程,b站起飞推广开户

B站广告开户流程,b站起飞推广开户

B站广告投放主要分为:B站信息流广告、B站开屏广告、B站视频起飞(商业起飞和内容起飞)等形式。 第一种:B站信息流广告 B站信息流广告选取首页推荐流、播放页和PC端等优质资源位,基于年轻、兴趣多元化的用户群体,在保持良好的用户体验的前提下,帮助广告主触达优质广告受众、兴趣圈层。展现...

开疆拓土,他们一直在路上——记中国安能一局市场经营部团队

开疆拓土,他们一直在路上——记中国安能一局市场经营部团队

中国基建报讯(高彬、于旭 报道)经营部,这是一个“非常活跃”的部门。明明是上班时间,电话一个接一个;上一秒还在开会,下一秒立马说走就走。办公室里常备旅行箱,一场说走就走的“旅行”,是他们的工作常态。转企以来,中国安能一局市场经营部团队聚焦企业高质量发展,主动抢占市场,加压奋...

【轻松上手】电脑怎么压缩拼多多商家版?看这篇就够了!

【轻松上手】电脑怎么压缩拼多多商家版?看这篇就够了!

对于许多拼多多商家来说,商家版的管理软件是日常经营的重要工具,但是其庞大的体积却让不少用户感到头痛。那么,电脑怎么压缩拼多多商家版呢?我将会给大家分享一些实用的技巧,让你的电脑轻松瘦身。 一、为什么要压缩拼多多商家版? 拼多多商家版的软件体积较大,长时间的使用会让电脑的运行速度变慢...

网站建成后怎么维护网站内容。

网站建成后怎么维护网站内容。

很多企业一个网站建成后以为工作就结束了,实际上只是一个阶段的工作告一段落,的工作就要开始了进行了,网站内容是网站重要组成部分,那么怎么维护网站内容,接下来小编就和你说一说网站建成后怎么维护网站内容,一起看看吧。 1、内容更新 影响搜索引擎排名的一个重要因素是更多的网页内容。包括:网站的...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片