美文网首页java从0到架构师
72_数据建模实战_祖孙三层数据关系建模以及搜索实战

72_数据建模实战_祖孙三层数据关系建模以及搜索实战

作者: 小山居 | 来源:发表于2020-02-29 23:10 被阅读0次

    72_数据建模实战_祖孙三层数据关系建模以及搜索实战

    父子关系,祖孙三层关系的数据建模,搜索

    PUT /company
    {
      "mappings": {
        "country": {},
        "rd_center": {
          "_parent": {
            "type": "country" 
          }
        },
        "employee": {
          "_parent": {
            "type": "rd_center" 
          }
        }
      }
    }
    

    country -> rd_center -> employee,祖孙三层数据模型

    添加数据---country(爷爷) 层

    POST /company/country/_bulk
    { "index": { "_id": "1" }}
    { "name": "中国" }
    { "index": { "_id": "2" }}
    { "name": "美国" }
    

    添加数据---re_center(父亲)

    POST /company/rd_center/_bulk
    { "index": { "_id": "1", "parent": "1" }}
    { "name": "北京研发总部" }
    { "index": { "_id": "2", "parent": "1" }}
    { "name": "上海研发中心" }
    { "index": { "_id": "3", "parent": "2" }}
    { "name": "硅谷人工智能实验室" }
    

    添加数据employee(孙)

    PUT /company/employee/1?parent=1&routing=1
    {
      "name":  "张三",
      "dob":   "1970-10-24",
      "hobby": "爬山"
    }
    

    routing参数的讲解,必须跟grandparent相同,否则有问题

    country,用的是自己的id去路由; rd_center,parent,用的是country的id去路由; employee,如果也是仅仅指定一个parent,那么用的是rd_center的id去路由,这就导致祖孙三层数据不会在一个shard上

    孙子辈儿,要手动指定routing,指定为爷爷辈儿的数据的id

    搜索有爬山爱好的员工所在的国家

    GET /company/country/_search
    {
      "query": {
        "has_child": {
          "type": "rd_center",
          "query": {
            "has_child": {
              "type": "employee",
              "query": {
                "match": {
                  "hobby": "爬山"
                }
              }
            }
          }
        }
      }
    }
    

    聚合结果:

    {
    "took": 10,
    "timed_out": false,
    "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
    },
    "hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
    {
    "_index": "company",
    "_type": "country",
    "_id": "1",
    "_score": 1,
    "_source": {
    "name": "中国"
    }
    }
    ]
    }
    }

    相关文章

      网友评论

        本文标题:72_数据建模实战_祖孙三层数据关系建模以及搜索实战

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