美文网首页elasticsearchElasticsearch玩转大数据
五十六、Elasticsearch数据建模--实现join关联查

五十六、Elasticsearch数据建模--实现join关联查

作者: 编程界的小学生 | 来源:发表于2017-07-21 10:45 被阅读168次

    1、案例背景

    博客网站,我们会模拟各种用户发表各种博客,然后针对用
    户和博客之间的关系进行数据建模,同时针对建模好的数据执行各种搜索/聚合操作

    2、数据准备

    新增一个用户

    POST /website/users
    {
      "id" : 1,
      "name" : "小鱼儿",
      "email" : "xiaoyuer@sina.com",
      "birthday" : "1980-01-01"
    }
    

    新增两个博客

    POST /website/blogs
    {
      "id" : 1,
      "title" : "我的第一篇博客",
      "content" : "这是我的第一篇博客,开通啦!!!",
      "userId" : 1
    }
    
    POST /website/blogs
    {
      "id" : 2,
      "title" : "ES基本操作",
      "content" : "ES的增删改查",
      "userId" : 1
    }
    

    上面一个用户对应多个博客,一对多的关系做了建模。

    3、需求

    搜索小鱼儿发表的所有博客

    4、实现

    (1)先查出小鱼儿这个人的id

    GET /website/users/_search
    {
      "query": {
        "match": {
          "name.keyword": "小鱼儿"
        }
      },
      "_source": "id"
    }
    

    (2)根据上面的id去查询博客

    GET /website/blogs/_search
    {
      "query": {
        "match": {
          "userId": 1
        }
      }
    }
    

    5、优点和缺点

    优点:数据不冗余,维护方便

    缺点:应用层join,如果关联数据过多,导致查询过大,性能很差。(比如说你要一次查询1万个用户的所有博客,你需要先查出1万个用户id,然后再去查1个用户拥有哪些博客)

    若有兴趣,欢迎来加入群,【Java初学者学习交流群】:458430385,此群有Java开发人员、UI设计人员和前端工程师。有问必答,共同探讨学习,一起进步!
    欢迎关注我的微信公众号【Java码农社区】,会定时推送各种干货:


    qrcode_for_gh_577b64e73701_258.jpg

    相关文章

      网友评论

        本文标题:五十六、Elasticsearch数据建模--实现join关联查

        本文链接:https://www.haomeiwen.com/subject/usiskxtx.html