新建父文档和维护父与子之间的关系
PUT parent_test
{
"mappings": {
"properties": {
"company_id": {
"type": "keyword"
},
"name":{
"type": "text"
},
"my_join_field": {
"type": "join",
"relations": {
"parent": ["patent","trademark"]
}
}
}
}
}
插入父文档数据
PUT parent_test/_doc/1
{
"company_id": "1",
"name": "阿里巴巴",
"my_join_field": {
"name": "parent"
}
}
PUT parent_test/_doc/2
{
"company_id": "2",
"name": "杭州阿里巴巴",
"my_join_field": {
"name": "parent"
}
}
PUT parent_test/_doc/3
{
"company_id": "3",
"name": "小米",
"my_join_field": {
"name": "parent"
}
}
PUT parent_test/_doc/4
{
"company_id": "4",
"name": "北京小米",
"my_join_field": {
"name": "parent"
}
}
插入子文档数据
PUT parent_test/_doc/1-1?routing=1
{
"patent_name": "阿里巴巴专利1",
"time":123,
"my_join_field": {
"name": "patent",
"parent": "1"
}
}
PUT parent_test/_doc/2-1?routing=2
{
"patent_name": "阿里巴巴专利2",
"time": 888,
"my_join_field": {
"name": "patent",
"parent": "2"
}
}
PUT parent_test/_doc/3-1?routing=3
{
"patent_name": "小米专利1",
"time": 123,
"my_join_field": {
"name": "patent",
"parent": "3"
}
}
PUT parent_test/_doc/4-1?routing=4
{
"patent_name": "小米专利2",
"time": 888,
"my_join_field": {
"name": "patent",
"parent": "4"
}
}
查询
查询子文档内容 has_child
查询父文档内容 has_parent
GET parent_test/_search
{
"query": {
"bool": {
"must": [
{
"has_child": {
"type": "patent",
"query": {
"bool": {
"must": [
{
"range": {
"time": {
"gte": 300,
"lte": 900
}
}
}
]
}
}
}
},
{
"match": {
"name": "阿里巴巴"
}
}
]
}
}
}
查询结果
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 3.822035,
"hits" : [
{
"_index" : "parent_test",
"_type" : "_doc",
"_id" : "2",
"_score" : 3.822035,
"_source" : {
"company_id" : "2",
"name" : "杭州阿里巴巴",
"my_join_field" : {
"name" : "parent"
}
}
}
]
}
}