У меня есть вложенный объект, из которого я хочу получить внутренний совпадающий объект только с соответствующим объектом верхнего уровня.
Также для сопоставления дочерние объекты имеют тип вложенного
Пример набора данных :
{
"type": "EVENT_TYPE",
"name": "American Football",
"id": "6423",
"children": [
{
"type": "EVENT",
"name": "NFL Season 2020/21",
"id": "29678534",
"countryCode": "GB",
"children": [
{
"type": "EVENT",
"name": "Super Bowl LV",
"id": "29678547",
"countryCode": "GB",
"children": [
{
"type": "MARKET",
"name": "Super Bowl Winner",
"id": "1.168283812",
"exchangeId": "1",
"marketType": "TOURNAMENT_WINNER",
"marketStartTime": "2021-02-07T22:30:00.000Z",
"numberOfWinners": 1
}
]
},
{
"type": "MARKET",
"name": "NFL Regular Season MVP 2020/21",
"id": "1.168480742",
"exchangeId": "1",
"marketType": "SEASON_SPECIALS",
"marketStartTime": "2020-09-11T00:20:00.000Z",
"numberOfWinners": 1
}
]
},
{
"type": "EVENT",
"name": "XFL Championship",
"id": "29673692",
"countryCode": "GB",
"children": [
{
"type": "MARKET",
"name": "Winner",
"id": "1.168353251",
"exchangeId": "1",
"marketType": "TOURNAMENT_WINNER",
"marketStartTime": "2020-02-08T19:00:00.000Z",
"numberOfWinners": 1
}
]
}
]
Я пробовал следующий запрос:
{
"_source" : ["name", "id", "children.name", "children.children.name"],
"query":{
"nested": {
"path":"children.children.children",
"inner_hits": { },
"query":{
"bool":{
"must":{
"match":{
"children.children.children.id":"1.168283812"
}
}
}
}
}
}
}
Ожидаемый ответ
name: "American Football"
"id":6423
children.name:"NFL Season 2020/21"
children.children.name:"Super Bowl LV"
"_source": {
"type": "MARKET",
"name": "Super Bowl Winner",
"id": "1.168283812",
"exchangeId": "1",
"marketType": "TOURNAMENT_WINNER",
"marketStartTime": "2021-02-07T22:30:00.000Z",
"numberOfWinners": 1
}
Фактический ответ: он дает все объекты верхнего уровня
name: "American Football"
"id":6423
children.name:["NFL Season 2020/21", "XFL Championship"]
children.children.name:["Super Bowl LV", "NFL Regular Season MVP 2020/21"]
"_source": {
"type": "MARKET",
"name": "Super Bowl Winner",
"id": "1.168283812",
"exchangeId": "1",
"marketType": "TOURNAMENT_WINNER",
"marketStartTime": "2021-02-07T22:30:00.000Z",
"numberOfWinners": 1
}
Я хочу получить только соответствующий объект верхнего уровня вместо массива всех объектов верхнего уровня с соответствующим внутренним объектом.