我有这些数据:
{
"someKey1" : "someValue1",
"someKey2" : "someValue2",
"someKey3" : "someValue3",
"someKey4" : "someValue4",
"projectParticipants" : [
{
"participant_id" : 1,
"role_id" : 1
},
{
"participant_id" : 4,
"role_id" : 2
},
{
"participant_id" : 5,
"role_id" : 3
}
]
}
我需要查找包含某些角色的项目参与者的项目。例如,我想查找项目,其中第1个角色1 ,第4个角色2 。
我该怎么做?
答案 0 :(得分:0)
您需要使用嵌套映射和查询。 您可以阅读有关嵌套类型here的更多信息。
完成后,您可以执行nested query。
因此,在将projectParticipants声明为嵌套在映射中之后,如下所示的查询就足够了 -
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "projectParticipants",
"score_mode": "avg",
"query": {
"bool": {
"must": [
{
"match": {
"projectParticipants.participant_id": 1
}
},
{
"match": {
"projectParticipants.role_id": 1
}
}
]
}
}
}
},
{
"nested": {
"path": "projectParticipants",
"score_mode": "avg",
"query": {
"bool": {
"must": [
{
"match": {
"projectParticipants.participant_id": 4
}
},
{
"match": {
"projectParticipants.role_id": 2
}
}
]
}
}
}
}
]
}
}
}