Ja, das ist machbar mit elastischen, b Zuerst müssen Sie Ihre Daten von der SQL-Tabelle zu dokumentenbasierten No-SQL-Daten modellieren.
Nested Dokument Ansatz
1) Sie eine Instanz von Datenmodell kann als
{
"purchasedDate": "2017-04-05",
"revenue": 30,
"user": {
"id": 1,
"city": "delhi",
"event": [{
"name": "signup",
"time": "2017-04-05"
}]
}
}
Für dieses Datenmodell folgt erhalten Sie auch Unterstützung Mappings
{
"mappings": {
"type_name": {
"properties": {
"purchasedDate": {
"type": "date"
},
"revenue": {
"type": "integer"
},
"user": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"city": {
"type": "text"
},
"event": {
"type": "nested",
"properties": {
"name": {
"type": "text"
},
"time": {
"type": "date"
}
}
}
}
}
}
}
}
}
hinzufügen müssen und schließlich können Sie die folgende Abfrage auslösen, um die gewünschten Ergebnisse zu erhalten
{
"size": 0,
"aggs": {
"revenue_sum": {
"sum": {
"field": "revenue"
}
}
},
"query": {
"bool": {
"must": [{
"term": {
"purchasedDate": {
"value": "2017-04-05"
}
}
}, {
"term": {
"user.city": {
"value": "delhi"
}
}
}, {
"nested": {
"path": "user.event",
"query": {
"bool": {
"must": [{
"term": {
"user.event.name": {
"value": "signup"
}
}
}, {
"term": {
"user.event.time": {
"value": "2017-04-05"
}
}
}]
}
}
}
}]
}
}
}
für furthur Lesen Sie folgenden Links
mappings nested datatype
Eltern Kind Ansatz
Mappings
{
"mappings": {
"user": {
"properties": {
"city": {
"type": "text"
}
}
},
"event": {
"_parent": {
"type": "user"
},
"properties": {
"name": {
"type": "text"
},
"time": {
"type": "date"
}
}
},
"order": {
"_parent": {
"type": "user"
},
"properties": {
"purchasedDate": {
"type": "date"
},
"revenue": {
"type": "integer"
}
}
}
}
}
Index Benutzer verweisen , Ordnung und Veranstaltungsunterlagen
POST data_play2/user/1
{
"city":"london"
}
POST data_play2/order/10?parent=1
{
"purchasedDate":"2017-04-05",
"revenue": 100
}
POST data_play2/event/1?parent=1
{
"userid" : 1,
"name" : "signup",
"time" : "2017-04-05"
}
Abfrage
{
"size": 0,
"aggs": {
"revenue": {
"children": {
"type": "order"
},
"aggs": {
"filtered_order": {
"filter": {
"bool": {
"must": [{
"term": {
"purchasedDate": {
"value": "2017-04-05"
}
}
}]
}
},
"aggs": {
"revenue_sum": {
"sum": {
"field": "revenue"
}
}
}
}
}
}
},
"query": {
"bool": {
"must": [{
"term": {
"city": {
"value": "london"
}
}
}, {
"has_child": {
"type": "order",
"query": {
"bool": {
"must": [{
"term": {
"purchasedDate": {
"value": "2017-04-05"
}
}
}]
}
}
}
}, {
"has_child": {
"type": "event",
"query": {
"bool": {
"must": [{
"term": {
"name": {
"value": "signup"
}
}
}, {
"term": {
"time": {
"value": "2017-04-05"
}
}
}]
}
}
}
}
]
}
}
}
diese link für furthur Lesung Siehe
hoffe, das hilft
Können wir es Eltern-Kind-relationship.Where Benutzer als Eltern zu lösen, Bestell- und Ereignistabelle ist Kind des Benutzers und Schema ist das gleiche von allen Tabellen. – Sandy
yeah Sie können, Eltern-Kind wird besser sein, wenn Sie eine große Anzahl von Bestellungen für jeden Benutzer haben, da die Größe des Dokuments im Limit sein wird – user3775217
können Sie bitte Abfrage teilen, wenn ich Benutzer als Elternteil und Auftrag und Ereignis als a Kind und alle haben dasselbe Schema wie MySQL. – Sandy