Hi Helennie,

Depending on your use case you can do any one of a few options:

1) Search for a specific date range, a specific URL and retrieve the count 
of pv for the URL over the date range:
{
  "query": {
    "constant_score": {
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "date": {
                  "from": "2014/01/01",
                  "to": "2014/01/04"
                }
              }
            },
            {
              "term": {
                "url": "http://www.example.com";
              }
            }
          ]
        } 
      }
    }
  },
  "aggs": {
    "pvCount": {
      "sum": {
        "field" : "pv"
      }
    }
  }
}


2) Search for a specific date range and return an aggregation for the count 
of pv for the top N URLs ordered by pv:
{
  "query": {
    "constant_score": {
      "filter": {
        "range": {
          "date": {
            "from": "2014/01/01",
            "to": "2014/01/01"
          }
        } 
      }
    }
  },
  "aggs": {
    "topURLs": {
      "terms": {
        "field": "url",
        "size": 10,
        "order": {
          "pvCount": "desc"
        }
      },
      "aggs": {
        "pvCount": {
          "sum": {
            "field" : "pv"
          }
        }
      }
    } 
  }
}

3) Return an aggregation which buckets date ranges and within those buckets 
returns the count of pv for the top N URLs ordered by pv:
{
  "aggs": {
    "dateByDay": {
      "date_histogram": {
        "field": "date",
        "interval": "day"
      },
      "aggs": {
        "topURLs": {
          "terms": {
            "field": "url",
            "size": 10,
            "order": {
              "pvCount": "desc"
            }
          },
          "aggs": {
            "pvCount": {
              "sum": {
                "field" : "pv"
              }
            }
          }
        }
      }
    }
  }
}

I hope this helps clarify some of your options,

Regards,

Colin

On Saturday, 28 June 2014 05:02:51 UTC+2, Helennie Nie wrote:
>
> Hi there
>
> I have some data like :
> {
> "url":"xxx",
> "pv":n,
> "date":Date
> }
> url is a string and pv is an integer, what I want is to sum pv of an url 
> form one date to another date, what aggregation should I use?
>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/0b3c312c-00ad-41ad-ac89-852cc824a407%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to