Мне нужно суммировать только значения для вложенных объектов, которые соответствуют запросу. Похоже, ElasticSearch определяет документы, соответствующие запросу, а затем суммирует все вложенные объекты. Из нижеследующего плана я хочу выполнить поиск по nestedobjects.objtype = "A" и вернуть сумму objvalue только для соответствия nestedobjects, я хочу получить значение 4. возможно ли это? Если да, то как?
Вот отображение
{
"myindex": {
"mappings": {
"mytype": {
"properties": {
"nestedobjects": {
"type": "nested",
"include_in_parent": true,
"properties": {
"objtype": {
"type": "string"
},
"objvalue": {
"type": "integer"
}
}
}
}
}
}
}
}
Вот мои документы
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 }
]
}
Вот мой код запроса.
POST allscriptshl7/_search?search_type=count
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "nestedobjects.objtype:A"
}
}
}
},
"aggregations": {
"my_agg": {
"sum": {
"field": "nestedobjects.objvalue"
}
}
}
}