È possibile ottenere dati di campo da genitore e figlio in una singola query elasticsearch? Essenzialmente quello che sto cercando di acquisire i dati per più campi padre e più campi figlio in una singola iterazione con filtro. Ho provato vari metodi per legare le informazioni in una singola query, ma non sono riuscito a capirne il senso. Ecco come il mio mappatura appare come: -Ottenere dati di campo multipli da genitore e figlio in una singola query elasticsearch
genitore:
_id_parent : values {1}
_source: {_date (20160316), _time (20160316010000), _id_source (test), _year (2016), _month (1)}
bambino:
_id_child : values {1}
_source: {_id_child (1), _id_parent (1), _child_question (q1), _child_answer (This needs to be done.)}
Output previsto (qualcosa di simile a sotto):
(PARENT)
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "index",
"_type" : "parent",
"_id" : "1",
"_score" : 1.0,
"_source":{_id_parent":"1","_id_source":"test","_date":"20160316","_time":"20160316010000","_year":2016,"_month":"1"}
} ]
}
(CHILD)
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "index",
"_type" : "child",
"_id" : "1",
"_score" : 1.0,
"_source":{"_id_child":"1", "_child_question":"q1","_child_answer":"This needs to be done."}
} ]
}
Links:
https://github.com/elastic/elasticsearch/issues/761
https://www.elastic.co/guide/en/elasticsearch/guide/current/children-agg.html
curl -XGET "$ELASTICSEARCH_ENDPOINT/index/parent/_search?pretty=true" -d "
{
"query": {
"match": {
"_id_parent": "1"
}
},
"size" : 10,
"aggs": {
"_id_parent": {
"terms": {
"field":"_id_parent",
"field":"_id_source",
"field":"_date",
"field":"_time",
"field":"_year",
"field":"_month",
},
"aggs": {
"child": {
"children": {
"type": "child"
},
"aggs": {
"child": {
"terms": {
"field": "child._id_child",
"field": "child._child_question",
"field": "child._child_answer",
}
}
}
}
}
}
}
}"
Questo lavoro ha funzionato? – Righto