0
votes

Im using elasticsearch 1.0.2 and I want to perform a search on it using a query with aggregation functions like sum()

Suppose my single record data is something like that

{
                "_index": "outboxpro",
                "_type": "message",
                "_id": "PAyEom_mRgytIxRUCdN0-w",
                "_score": 4.5409594,
                "_source": {
                   "team_id": "1bf5f3f968e36336c9164290171211f3",
                   "created_user": "1a9d05586a8dc3f29b4c8147997391f9",
                   "created_ip": "192.168.2.245",
                   "folder": 1,
                   "report": [
                      {
                         "networks": "ec466c09fd62993ade48c6c4bb8d2da7facebook",
                         "status": 2,
                         "info": "OK"
                      },
                      {
                         "networks": "bdc33d8ca941b8f00c2a4e046ba44761twitter",
                         "status": 2,
                         "info": "OK"
                      },
                      {
                         "networks": "ad2672a2361d10eacf8a05bd1b10d4d8linkedin",
                         "status": 5,
                         "info": "[unauthorized] Invalid or expired token."
                      }
                   ]
                }
}

Let's say I need to fetch the count of all success messages posted with status = 2 in report field. There will be many record in the collection. I want to take report of all success messages posted.

I have tried the following code ////////////// Edit

  {
   "size": 2000,
   "query": {
      "filtered": {
         "query": {
            "match": {
               "team_id": {
                  "query": "1bf5f3f968e36336c9164290171211f3"
               }
            }
         }
      }
   },
   "aggs": {
      "genders": {
         "terms": {
            "field": "report.status"
         }
      }
   }
}

Please help me to find some solution. Am newbie in elastic search. Is there any other aggregation method to find this one ?. Your help i much appreciate.

2

2 Answers

0
votes

Your script filter is slow on big data and doesn't use benefits of "indexing". Did you think about parent/child instead of nested? If you use parent/child - you could use aggregations natively and use calculate sum.