Вложенный запрос эластичного поиска 6.7 с атрибутами разного уровня

отображения:

{
    "mappings":{
    "feeds": {
        "properties": {
        "feedId" : {"type":"keyword"},
        "feedDate":{"type": "keyword"},
        "account": {
                "type": "nested",
                "properties": {

                    "investment": {
                        "type": "nested",
                        "properties": {

                        }
                    }
                }
            }   

        }
    }
}}

наборы данных:

{
{
  "feedId": "feed_1",
  "feedDate" : "20180106",
  "account": [
    {
      "id": "account_201",
      "user_id": "[email protected]",
      "investment": [
        {
          "investmentId":"001",
          "cost":"8000"
        },
        {
         "investmentId":"012",
          "cost": "3400"
        }
      ]
    },
    {
      "id": "account_230",
      "user_id": "[email protected]",
      "investment": [
        {
        "investmentId":045",
          "cost": "1200"
        },
        {
        "investmentId" : "093"
          "cost": "5320"
        }
      ]
    }
  ]
},
{
  "feedId": "feed_13",
  "feedDate" : "20180716",
  "account": [
    {
      "id": "account_1108",
      "user_id": "[email protected]",
      "investment": [
        {
          "investmentId":"121",
          "cost":"3200"
        },
        {
         "investmentId":"112",
          "cost": "3800"
        }
      ]
    },
    {
      "id": "account_2310",
      "user_id": "[email protected]",
      "investment": [
        {
        "investmentId":"097",
          "cost": "3100"
        },
        {
        "investmentId" : "123",
          "cost": "5320"
        }
      ]
    }
  ]
}

}

Мне нужны фиды, соответствующие feedId, feedDate и investementId. например для

"feedId": "feed_13",
"feedDate" : "20180716",
"investmentId":"121",

результат должен быть:

{
  "feedId": "feed_13",
  "feedDate" : "20180716"
  "account": [
    {
      "id": "account_1108",
      "user_id": "[email protected]",
      "investment": [
        {
          "investmentId":"121",
          "cost":"3200"
        }]
    }
    ]
}

Мой запрос:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "feedDate": "20180716"
          }
        },
        {
          "match": {
            "feedId": "feed_13"
          }
        },
        {
          "nested": {
            "path": "account.investment",
            "query": {
              "match": {
                "account.investment.investmentId": "121"
              }
            },
            "inner_hits": {}
          }

        }
      ]
    }
  }
}

но это дает все инвестиции, и я хочу только соответствующие инвестиции. Как запросить документы, чтобы получить ожидаемый результат.

Я попытался выполнить вопрос и вопрос, но не повезло.

Я использую эластичный поиск версии 6.7.


person optional    schedule 29.07.2019    source источник
comment
Блок inner_hits будет иметь только соответствующие инвестиции.   -  person Nishant    schedule 29.07.2019
comment
inner_hits содержат только вложенные документы запроса. Мой ожидаемый результат указан в посте   -  person optional    schedule 29.07.2019
comment
Вы можете ограничить вывод запроса, но не можете изменить формат вывода запроса.   -  person Nishant    schedule 29.07.2019
comment
Не могли бы вы обновить запрос и дайте мне знать   -  person optional    schedule 29.07.2019
comment
Ваш запрос выглядит нормально   -  person Nishant    schedule 29.07.2019