Dovetail Reporting
with Elasticsearch
Elasticsearch Suitability
with Caliper Events
Not So Much
- Caliper is denormalized, but still relational
- Elasticsearch has no support for relationships
- Requires multiple stages to generate a result
Stages are Expensive
- Think of a stage as a join or subselect in SQL
- In Elasticsearch:
- Execute ES query
- Iterate result set while performing business logic
- Grouping
- Finding max value
- Collecting intermediate values
- Repeat #1
Class Performance Report


Aggregation
-
Learning objective
-
Learner
- Average score
-
Learner

Aggregation
-
Learning objective
-
Learner
- Max Score
- Total Score
-
Learner
No Custom Scripting

Filter Criteria
Date range
Classes
Learning Objectives
Data Source

Query Stages
- Filter Assessment Outcome events
- Filter Assessment Item Outcome Events
- Aggregate Assessment Item Outcome data

Stage 1
Assessment Outcome

Assessment Outcome
(filtered)
filter (apply criteria)
filter (max ( endedAtDate ) )
[14, 87, 112, 114, 871, ...]
assessment attempt ids


Stage 2
Assessment Item Outcome

Assessment Item Outcome
(filtered)
filter ([14, 87, 112, 114, 871, ...])
filter (max ( endedAtDate ) )
[48, 1015, 2349, 8670, ...]
assessment item attempt ids


Stage 3
Assessment Item Outcome

aggregate (skill, learner)
transform

{
elasticsearch json
}
{
dovetail json
}
Demo
Class Performance
curl -X POST -H "Content-Type: application/json" -d '{
"classIds": ["http://mheducation.com/connected/classes/43e9a1bf-b039-45a5-9164-04bd03709c92"],
"learningObjectives": ["http://api.academicbenchmarks.com/rest/v3/standards/CF6A375C-67AD-11DF-AB5F-995D9DFF4B22"],
"boundsLower": "2015-08-01T00:00:00Z",
"boundsUpper": "2016-06-01T00:00:00Z",
"sourceSystems": ["engrade"],
"activityTypes": ["assessment"]}' 'http://leap-output-rest-api-dev.mhedovetail.com/reports/classes/performance'Demo
Class Assessments
curl -X POST -H "Content-Type: application/json" -d '{
"classIds": ["http://mheducation.com/connected/classes/43e9a1bf-b039-45a5-9164-04bd03709c92"],
"learningObjectives": ["http://api.academicbenchmarks.com/rest/v3/standards/CF6A375C-67AD-11DF-AB5F-995D9DFF4B22"],
"boundsLower": "2015-08-01T00:00:00Z",
"boundsUpper": "2016-06-01T00:00:00Z",
"sourceSystems": ["engrade"],
"activityTypes": ["assessment"]}' 'http://leap-output-rest-api-dev.mhedovetail.com/reports/classes/assessment'Dovetail Reporting
By James Cook
Dovetail Reporting
- 863