elasticsearch玩转大数据大数据 爬虫Python AI Sql

五十七、Elasticsearch数据建模--通过数据冗余实现用

2017-07-21  本文已影响55人  编程界的小学生

1、需求

查询小鱼儿这个人发了哪些博客

2、方案

用冗余数据,采用文档数据模型,进行数据建模,实现用户和博客的关联

3、数据准备

准备用户:

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

准备博客

POST /website/blogs
{
  "id" : 1,
  "title": "小鱼儿的第一篇博客",
  "content": "大家好,我是小鱼儿。。。",
  "userInfo": {
    "userId": 1,
    "username": "小鱼儿"
  }
}

4、实现

GET /website/blogs/_search
{
  "query": {
    "term": {
      "userInfo.userId": "1"
    }
  }
}

就不需要走应用层的join,先搜一个数据,找到id,再去搜另一份数据

直接走一个有冗余数据的type即可,指定要的搜索条件,即可搜索出自己想要的数据来

5、优缺点

优点:性能高,不需要执行两次搜索

缺点:数据冗余,维护成本高 --> 每次如果你的username变化了,同时要更新user type和blog type

一般来说,对于es这种NoSQL类型的数据存储来讲,都是冗余模式....

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


qrcode_for_gh_577b64e73701_258.jpg
上一篇下一篇

猜你喜欢

热点阅读