ElasticSearch第五讲 ES nested嵌套文档与父子文档处理

这篇具有很好参考价值的文章主要介绍了ElasticSearch第五讲 ES nested嵌套文档与父子文档处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Elasticsearch中如何处理关联关系

在ES中,处理实体之间的关系并不像关系型存储那样明显。在关系数据库中的黄金准则 - 数据规范化,在ES中并不适用。在处理关联关系,嵌套对象和父子关联关系中,我们会讨论几种可行方案的优点和缺点。

紧接着在为可扩展性而设计中,我们会讨论ES提供的一些用来快速灵活实现扩展的特性。对于扩展,并没有一个可以适用于所有场景的解决方案。你需要考虑数据是如何在你的系统中流转的,从而恰当地对你的数据进行建模。针对基于时间的数据比如日志事件或者社交数据流的方案比相对静态的文档集合的方案是十分不同的。

反范式化(Denormalize)的设计不使用关联关系,而是在文档中保存冗余的数据拷贝。

优点: 无需处理Join操作,数据读取性能好。Elasticsearch可以通过压缩_source字段,减少磁盘空间的开销
缺点: 不适合在数据频繁修改的场景。 一条数据的改动,可能会引起很多数据的更新

Elasticsearch并不擅长处理关联关系,一般会采用以下四种方法处理关联:

对象类型
嵌套对象(Nested Object)
父子关联关系(Parent / Child )
应用端关联

对象类型

对象类型:
在每一个用户的文档里都记录用户的住址信息
如果用户的住址信息发生变化,需要修改对应的用户信息文章来源地址https://www.toymoban.com/news/detail-431632.html

PUT /user_index
{
  "mappings": {
    "properties": {
      "user_name": {
  

到了这里,关于ElasticSearch第五讲 ES nested嵌套文档与父子文档处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch学习-父子文档

    elasticsearch父子文档处理 join 一、背景 二、需求 三、前置知识 四、实现步骤 1、创建 mapping 2、添加父文档数据 3、添加子文档 4、查询文档 1、根据父文档id查询它下方的子文档 2、has_child返回满足条件的父文档 3、has_parent返回满足父文档的子文档 五、Nested Object 和 join 对比 六

    2024年02月06日
    浏览(26)
  • RestHighLevelClient实现ElasticSearch关联查询之父子文档

    RestHighLevelClient实现ElasticSearch关联查询之父子文档今天分享,承接上一篇内容: DSL操作关联查询 这篇我们通过javaAPI的方式实现: 一、springboot 配置 1、pom文件引用: 2、初始化配置es操作类 3、业务层引用 二、核心伪代码 1、创建父子索引 kibana查看 2、判断索引是否存在 3、删

    2024年02月10日
    浏览(26)
  • elasticsearch 父子文档使用must not 正确姿势

    1、基于elasticsearch 父子文档进行子条件查询父文档 2、需要查询出子文档不存在的父文档 1、父文档clue_list 关联很多的子文档,我们用roam子文档做测试! 2、roam子文档的结构 需求是查询出roam子文档不存在的数据,由于我们es的所有数据companyId == 1 我们可以用must not来排除 co

    2024年02月05日
    浏览(30)
  • Elasticsearch中父子文档的关联:利用Join类型赋予文档的层级关系

    码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! Elasticsearch是一个强大的搜索引擎,它提供了丰富的功能来满足复杂的搜索需求。其中,父子索引类型的join功能是一个强大的工具,它允许我们在同一索引中创建具有层级关系的文档

    2024年04月15日
    浏览(30)
  • Elasticsearch实战(二十四)---ES数据建模一对多模型Nested结构

    我们如何把Mysql的模型合理的在ES中去实现? 就需要你对要存储的数据足够的了解,及对应用场景足够的深入分析,才能建立一个合适的模型,便于你后期扩展 一对一 模型 一对多 模型 多对多 模型 上一篇,我们介绍了 一对多模型,采用Object对象存储的巨大缺陷,本篇文章,我们

    2024年02月14日
    浏览(36)
  • 第五讲 分支结构

    迄今为止,我们写的 Python 代码都是一条一条语句按顺序向下执行的,这种代码结构叫做顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的过关条件是玩家获得1000分,那么在第一关完成后,我们要根据玩家得到分数来决定是进入第二

    2023年04月23日
    浏览(19)
  • Acwing linux 第五讲git

    代码部分我给大家在最后单独整一个页面好看,正文内容里面也有大家可以一边看一用!!!!!!!!!!!!!!!!!!!! 昨天讲了ssh内容,今天讲解git,git是个灰常重要的工具,所以我要给大家先讲一下陌生的git。 先放网上解释: Git  是一种 分布式版本控制系统

    2024年02月03日
    浏览(29)
  • 算法基础课第五讲 动态规划

    时间复杂度:状态数量 转移的计算量 * 总体概述:给一堆物品,有体积有价值。有一个背包,在背包能装下的前提下最终能装下多少(背包不一定要装满) DP问题:一般需要从两方面考虑:状态表示以及状态计算 状态表示:f(i,j) 从两个方面考虑:集合(所有选法的集合)(

    2024年02月01日
    浏览(27)
  • Redis 7 第五讲 事务、管道、发布订阅 过渡篇

             可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞          一个队列中,一次性、顺序性、排他性的执行一系列命令 单独的隔离操作 Redis的事务仅仅是保证事务里的操

    2024年02月10日
    浏览(29)
  • 解码 Elasticsearch 查询 DSL:利用 Elasticsearch 中的 has_child 和 has_parent 查询进行父子文档搜索

    今天,让我们深入研究 has_child 查询和 has_parent 查询,这将帮助我们将 2 个不同的文档组合到一个索引中,从而使我们能够将它们与关系关联起来。 这样做会对我们搜索相关文档时有很大帮助。 在使用 has_child 及 has_parent 这种关系时,我们必须使用 join 数据类型。更多有关

    2024年02月02日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包