Elasti c поиск объединяет родительский и вложенный массив json в один - PullRequest
0 голосов
/ 24 марта 2020

У меня есть индекс, который содержит пользователя и его список заказов в elasti c:

PUT index/_doc/123
{
    "user_id": 123
    "name": "User1",
    "address": "Street",
    "orders": [
                {
                    "order_idx": 1,
                    "detail": "some details"
                    "amount": 400
                },
                {
                    "order_idx": 2,
                    "detail": "new detail"
                    "amount": 200
                }
              ]
}
PUT index/_doc/456
{
    "user_id": 456
    "name": "User2",
    "address": "Street New",
    "orders": [
                {
                    "order_idx": 1,
                    "detail": "some new details"
                    "amount": 450
                },
                {
                    "order_idx": 2,
                    "detail": "ordered"
                    "amount": 600
                }
              ]
}

Я хотел бы выполнить поиск по полю order_idx и получить объединенный JSON родительского элемента и вложенный объект:

GET search by order_idx = 2
[
{
    "user_id": 123,
    "name": "User1",
    "address": "Street",

    "order_idx": 2,
    "detail": "new detail2",
    "amount": 200
},
{
    "user_id": 456,
    "name": "User2",
    "address": "Street New",

    "order_idx": 2,
    "detail": "ordered",
    "amount": 600
}
]

Можем ли мы объединить json в elasti c или мне нужно сделать это снаружи?

РЕДАКТИРОВАТЬ:

Если объединение не может быть сделано, я могу получить только фильтрованную часть массива. например:

GET search by order_idx = 2
[{
    "user_id": 123,
    "name": "User1",
    "address": "Street",
    "orders": [
        "order_idx": 2,
        "detail": "new detail2",
        "amount": 200
    ]

},
{
    "user_id": 456,
    "name": "User2",
    "address": "Street New",
    "orders": [
        "order_idx": 2,
        "detail": "ordered",
        "amount": 600
    }
}]
...