es java api parent,Elasticsearch Java API(八)--搜索有相同父id的子文档

需求:

搜索具有相同父id的所有子文档.

数据:

mapping:

{

"mappings": {

"branch": {},

"employee": {

"_parent": {

"type": "branch"

}

}

}

}

父文档:

{ "index": { "_id": "london" }}

{ "name": "London Westminster", "city": "London", "country": "UK" }

{ "index": { "_id": "liverpool" }}

{ "name": "Liverpool Central", "city": "Liverpool", "country": "UK" }

{ "index": { "_id": "paris" }}

{ "name": "Champs Élysées", "city": "Paris", "country": "France" }

子文档:

{ "index": { "_id": 1, "parent": "london" }}

{ "name": "Alice Smith", "dob": "1970-10-24", "hobby": "hiking" }

{ "index": { "_id": 2, "parent": "london" }}

{ "name": "Mark Thomas", "dob": "1982-05-16", "hobby": "diving" }

{ "index": { "_id": 3, "parent": "liverpool" }}

{ "name": "Barry Smith", "dob": "1979-04-01", "hobby": "hiking" }

{ "index": { "_id": 4, "parent": "paris" }}

{ "name": "Adrien Grand", "dob": "1987-05-11", "hobby": "horses" }

搜索父id为london的employee:

curl GET company/employee/_search

"query":{

"has_parent":{

"type":"branch",

"query":{

"term":{

"_parent":"london"

}

}

}

}

}

这样搜没有搜到任何结果.各种尝试都没有成功,后来到stackoverflow上提问得到了答案,正确的搜索:

curl GET company/employee/_search

{

"query": {

"has_parent": {

"type": "branch",

"query": {

"ids": {

"values" : ["london"]

}

}

}

}

对应的java api:

HasParentQueryBuilder hpqb=QueryBuilders.hasParentQuery("branch",QueryBuilders.idsQuery().ids("london"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值