Ich bin neu bei ElasticSearch, es sieht fantastisch aus, aber ich brauche noch einige Paradigmenwechsel, um zu verstehen, wie man damit arbeitet.elasticsearch aggregate by multiple fields
Mein Projekt ist eine Umfrage-Plattform mit einem Dashboard. Eine Umfrage hat mehrere "Bildschirme" (Fragen) und jeder Bildschirm hat mehrere mögliche Antworten - ein Benutzer wählt einen aus und wenn er mit der Umfrage fertig ist, reicht er es ein.
Lassen Sie uns sagen, dass ich ein Dokument haben, die wie folgt aussieht (steht für eine Umfrage, dass ein Benutzer hat):
{
"survey_station_id": "199",
"survey_id": "905",
"survey_unique_identifier": "2016-05-11 08:45:34-e4c080d90264e47a1fdb2d021ca52d3a",
"current_timestamp": 1462949134,
"survey_timestamp": "1462949115",
"answers": [{
"screen_id": "9429",
"answer_id": "4"
}, {
"screen_id": "9428",
"answer_id": "3"
}, {
"screen_id": "9431",
"answer_id": "0",
"answer_text": "Very good"
}, {
"screen_id": "10819",
"answer_id": "10742"
}, {
"screen_id": "10820",
"answer_id": "0",
"answer_text": "[email protected]"
}, {
"screen_id": "10821",
"answer_id": "9"
}, {
"screen_id": "10822",
"answer_id": "5"
}, {
"screen_id": "10823",
"answer_id": "10745"
}]
}
ich Tonnen von Dokumenten wie dieses in meinem DB (oder Index).
In meinem Armaturenbrett, ich möchte eine Aufschlüsselung nach den Bildschirm zu übertragen und die Anzahl der jede Antwort, etwas zu zählen, die diese mir sagen wird:
{
screen_id: 9429,
answers: [{
answer_id: 1,
doc_count: 150
}, {
answer_id: 2,
doc_count: 23
}],
screen_id: 9428,
answers: [{
answer_id: 1,
doc_count: 78
}, {
answer_id: 2,
doc_count: 96
}]
}
Wie kann ich das oder ähnliches erreichen? Ist es möglich und einfach mit meiner Dokumentenstruktur oder sollte ich einige Manipulationen daran vornehmen, um die Effizienz einer solchen Anforderung zu verbessern?
Vielen Dank im Voraus
Meiner Meinung nach ist die beste Art, diese Daten darzustellen, ein Dokument pro Bildschirm/Antwort einschließlich der Umfrage-ID, Zeitstempel usw. '{" screen_id ":" 10832 "," answer_id ":" 10745 "," survey_id " : "905", "survey_timestamp": 1462949134, ...} '. Es wird viel einfacher sein, die Daten danach zu schneiden und zu würfeln. – Val
Danke für die Eingabe, ich werde darüber nachdenken (Es ist wirklich eine gute Idee), aber im Allgemeinen, wenn ich eine solche Anforderung mit meiner bestehenden Struktur erreichen will, ist es möglich? – ThaiKov
Sie können möglicherweise erreichen, was Sie wollen, aber Sie müssen sicherstellen, dass "Antworten" vom Typ "verschachtelt" in Ihrem Mapping ist. – Val