отображения:
{
"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.
inner_hits
будет иметь только соответствующие инвестиции. - person Nishant   schedule 29.07.2019