Skip to content

Instantly share code, notes, and snippets.

@sp90

sp90/elasticExample.js

Last active Dec 12, 2018
Embed
What would you like to do?
Elastic example - querying survey data
let dataSet = [{
"survey_answers": [
{
"id": "9ca01568e8dbb247", // As they are, this is the key to groupBy
"option_answer": 5, // Represent the index of the choosen option
"type": "OPINION_SCALE" // Opinion scales are 0-10 (meaning elleven options)
},
{
"id": "ba37125ec32b2a99",
"option_answer": 3,
"type": "LABELED_QUESTIONS" // Labeled questions are 0-x (they can change it from survey to survey)
}
],
"survey_id": "test"
},
{
"survey_answers": [
{
"id": "9ca01568e8dbb247",
"option_answer": 0,
"type": "OPINION_SCALE"
},
{
"id": "ba37125ec32b2a99",
"option_answer": 3,
"type": "LABELED_QUESTIONS"
}
],
"survey_id": "test"
}]
let query = {
"query": {
"match": {
"survey_id": "test"
}
},
"aggs": {
"agg_survey_answers": {
"terms": {
"field": "survey_answers.id.keyword"
},
"aggs": {
"agg_option_answer": {
"terms": {
"field": "survey_answers.option_answer"
}
}
}
}
}
}
// Actual output
let output = {
"agg_survey_answers": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": "9ca01568e8dbb247",
"doc_count": 2,
"agg_option_answer": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": 3,
"doc_count": 2
}, {
"key": 0,
"doc_count": 1
}, {
"key": 5,
"doc_count": 1
}]
}
}, {
"key": "ba37125ec32b2a99",
"doc_count": 2,
"agg_option_answer": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": 3,
"doc_count": 2
}, {
"key": 0,
"doc_count": 1
}, {
"key": 5,
"doc_count": 1
}]
}
}]
}
}
// Desired output
let desired_output = {
"agg_survey_answers": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": "9ca01568e8dbb247",
"doc_count": 2,
"agg_option_answer": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": 0,
"doc_count": 1
}, {
"key": 5,
"doc_count": 1
}]
}
}, {
"key": "ba37125ec32b2a99",
"doc_count": 2,
"agg_option_answer": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": 3,
"doc_count": 2
}]
}
}]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.