Ich muss nur die Werte für die verschachtelten Objekte zusammenfassen, die der Abfrage entsprechen. Es sieht so aus, als ob ElasticSearch die Dokumente ermittelt, die mit der Abfrage übereinstimmen, und anschließend alle verschachtelten Objekte summiert. Aus der folgenden Gliederung möchte ich nach nestedobjects.objtype = "A" suchen und die Summe von objvalue nur für passende verschachtelte Objekte zurückholen, ich möchte den Wert 4 erhalten. Ist das möglich? Wenn das so ist, wie?Aggregieren Sie nur verschachtelte verschachtelte Objektwerte in ElasticSearch
Hier ist die Abbildung
{
"myindex": {
"mappings": {
"mytype": {
"properties": {
"nestedobjects": {
"type": "nested",
"include_in_parent": true,
"properties": {
"objtype": {
"type": "string"
},
"objvalue": {
"type": "integer"
}
}
}
}
}
}
}
}
Hier sind meine Dokumente
PUT /myindex/mytype/1
{
"nestedobjects": [
{ "objtype": "A", "objvalue": 1 },
{ "objtype": "B", "objvalue": 2 }
]
}
PUT /myindex/mytype/2
{
"nestedobjects": [
{ "objtype": "A", "objvalue": 3 },
{ "objtype": "B", "objvalue": 3 }
]
}
Hier ist meine Abfrage-Code.
POST allscriptshl7/_search?search_type=count
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "nestedobjects.objtype:A"
}
}
}
},
"aggregations": {
"my_agg": {
"sum": {
"field": "nestedobjects.objvalue"
}
}
}
}
Danke, ich werde es ein wenig testen. – user481779
Funktioniert wie beschrieben! – user481779
Keine echte Lösung: Hängt von bekannten Werten für den Filter ab, funktioniert nicht mit Histogramm, Datumshistogramm oder Termen mit nicht vorhersagbaren Schlüsseln. – Sebastian