[英]Complex nested filter in ElasticSearch
我有此數據:
{
"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和角色2的人員4 。
我怎樣才能做到這一點?
您需要為此使用嵌套映射和查詢。 您可以在此處閱讀有關嵌套類型的更多信息 。
完成后,您可以進行嵌套查詢 。
因此,在將projectParticipant聲明為嵌套在映射中之后,如下查詢就足夠了-
{
"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
}
}
]
}
}
}
}
]
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.