美文网首页java从0到架构师
70_数据建模实战_根据员工信息和研发中心互相搜索父子数据

70_数据建模实战_根据员工信息和研发中心互相搜索父子数据

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

    70_数据建模实战_根据员工信息和研发中心互相搜索父子数据

    我们已经建立了父子关系的数据模型之后,就要基于这个模型进行各种搜索和聚合了

    1、搜索有1980年以后出生的员工的研发中心

    GET /company/rd_center/_search
    {
      "query": {
        "has_child": {
          "type": "employee",
          "query": {
            "range": {
              "birthday": {
                "gte": "1980-01-01"
              }
            }
          }
        }
      }
    }
    

    搜索结果如下:

    {
    "took": 33,
    "timed_out": false,
    "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
    },
    "hits": {
    "total": 2,
    "max_score": 1,
    "hits": [
    {
    "_index": "company",
    "_type": "rd_center",
    "_id": "1",
    "_score": 1,
    "_source": {
    "name": "北京研发总部",
    "city": "北京",
    "country": "中国"
    }
    },
    {
    "_index": "company",
    "_type": "rd_center",
    "_id": "3",
    "_score": 1,
    "_source": {
    "name": "硅谷人工智能实验室",
    "city": "硅谷",
    "country": "美国"
    }
    }
    ]
    }
    }

    2、搜索有名叫张三的员工的研发中心

    GET /company/rd_center/_search
    {
      "query": {
        "has_child": {
          "type":       "employee",
          "query": {
            "match": {
              "name": "张三"
            }
          }
        }
      }
    }
    

    搜索结果如下:

    {
    "took": 2,
    "timed_out": false,
    "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
    },
    "hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
    {
    "_index": "company",
    "_type": "rd_center",
    "_id": "1",
    "_score": 1,
    "_source": {
    "name": "北京研发总部",
    "city": "北京",
    "country": "中国"
    }
    }
    ]
    }
    }

    3、搜索有至少2个以上员工的研发中心

    GET /company/rd_center/_search
    {
      "query": {
        "has_child": {
          "type":         "employee",
          "min_children": 2, 
          "query": {
            "match_all": {}
          }
        }
      }
    }
    

    聚合结果:
    {
    "took": 5,
    "timed_out": false,
    "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
    },
    "hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
    {
    "_index": "company",
    "_type": "rd_center",
    "_id": "1",
    "_score": 1,
    "_source": {
    "name": "北京研发总部",
    "city": "北京",
    "country": "中国"
    }
    }
    ]
    }
    }

    4、搜索在中国的研发中心的员工

    GET /company/employee/_search 
    {
      "query": {
        "has_parent": {
          "parent_type": "rd_center",
          "query": {
            "term": {
              "country.keyword": "中国"
            }
          }
        }
      }
    }
    

    结果:
    {
    "took": 5,
    "timed_out": false,
    "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
    },
    "hits": {
    "total": 3,
    "max_score": 1,
    "hits": [
    {
    "_index": "company",
    "_type": "employee",
    "_id": "3",
    "_score": 1,
    "_routing": "2",
    "_parent": "2",
    "_source": {
    "name": "王二",
    "birthday": "1979-04-01",
    "hobby": "爬山"
    }
    },
    {
    "_index": "company",
    "_type": "employee",
    "_id": "1",
    "_score": 1,
    "_routing": "1",
    "_parent": "1",
    "_source": {
    "name": "张三",
    "birthday": "1970-10-24",
    "hobby": "爬山"
    }
    },
    {
    "_index": "company",
    "_type": "employee",
    "_id": "2",
    "_score": 1,
    "_routing": "1",
    "_parent": "1",
    "_source": {
    "name": "李四",
    "birthday": "1982-05-16",
    "hobby": "游泳"
    }
    }
    ]
    }
    }

    相关文章

      网友评论

        本文标题:70_数据建模实战_根据员工信息和研发中心互相搜索父子数据

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