# Getting the number of visits of a specific route in nginx using elasticsearch

**URL:** https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257
**Category:** Elasticsearch
**Created:** [August 4, 2016, 4:40pm UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257 "2016-08-04T16:40:41Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![fethitunpixel](https://avatars.discourse-cdn.com/v4/letter/f/d26b3c/32.png) [@fethitunpixel](https://discuss.elastic.co/u/fethitunpixel)
#### Post date: [August 4, 2016, 4:40pm UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/1 "2016-08-04T16:40:41Z")

</div>

I m using Nginx as a proxy to my website, I've configured Logstash to parse Nginx log files and save them to Elasticsearch... Now I want to analyse those data.  
I need a query to get number of visits of visits of a specific route, like [http://company/company\_name](http://company/company_name) and /joboffer/job\_offer\_title

nginx Logs are stored like this in Elasticsearch:  
referrer: url of the resource  
verb: HTTP method like GET, POST, ...

```
{
        "_index": "logstash-2016.07.27",
        "_type": "nginx-access",
        "_id": "AVZMOZHNl8SqLoCNz3nb",
        "_score": 1,
        "_source": {
          "message": "172.18.0.1 - - [27/Jul/2016:14:39:29 +0000] \"GET /favicon.ico HTTP/1.1\" 404 24 \"http://jobi.dev/\" \"-\" \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36\" \"-\"",
          "@version": "1",
          "@timestamp": "2016-07-27T14:39:29.000Z",
          "path": "/tunlogia/nginx/access.log",
          "host": "fa6cdfd75875",
          "type": "nginx-access",
          "clientip": "172.18.0.1",
          "ident": "-",
          "auth": "-",
          "verb": "GET",
          "request": "/favicon.ico",
          "httpversion": "1.1",
          "response": 404,
          "bytes": 24,
          "referrer": "\"http://jobi.dev/\"",
          "x_alt_referrer": "\"-\"",
          "agent": "\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36\"",
          "extra_fields": " \"-\"",
          "name": "Chrome",
          "os": "Linux",
          "os_name": "Linux",
          "device": "Other",
          "major": "52",
          "minor": "0",
          "patch": "2743"
        }
      }

```

My question is how can I get the number of visits of a specific route having '`GET`' as a verb

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [August 5, 2016, 8:59am UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/2 "2016-08-05T08:59:25Z")

</div>

Based on the example record provided, how would you determine the route?

---

<div class="post-metadata">

### Author: ![fethitunpixel](https://avatars.discourse-cdn.com/v4/letter/f/d26b3c/32.png) [@fethitunpixel](https://discuss.elastic.co/u/fethitunpixel)
#### Post date: [August 5, 2016, 9:01am UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/3 "2016-08-05T09:01:55Z")

</div>

The route is in the referrer field

---

<div class="post-metadata">

### Author: ![fethitunpixel](https://avatars.discourse-cdn.com/v4/letter/f/d26b3c/32.png) [@fethitunpixel](https://discuss.elastic.co/u/fethitunpixel)
#### Post date: [August 5, 2016, 9:06am UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/4 "2016-08-05T09:06:33Z")

</div>

I need two queries to count two kind of routes:

- Company profile visits like .\*/company/company\_name

- Company job offer visits like .\*/joboffers/job\_offer\_title-at-company\_name

and in both queries the verb field must be 'GET'  
And both queries to be aggregated over time using '@timestamp' field

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [August 5, 2016, 9:28am UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/5 "2016-08-05T09:28:51Z")

</div>

Depending on the complexity of the rules around extracting route from the referrer field, it may be worthwhile extracting this into a separate field prior to indexing it into Elasticsearch.

---

<div class="post-metadata">

### Author: ![fethitunpixel](https://avatars.discourse-cdn.com/v4/letter/f/d26b3c/32.png) [@fethitunpixel](https://discuss.elastic.co/u/fethitunpixel)
#### Post date: [August 5, 2016, 9:43am UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/6 "2016-08-05T09:43:36Z")

</div>

It's already in a separate field in ES, parsed from nginx access log uisng Logstash

---

<div class="post-metadata">

### Author: ![fethitunpixel](https://avatars.discourse-cdn.com/v4/letter/f/d26b3c/32.png) [@fethitunpixel](https://discuss.elastic.co/u/fethitunpixel)
#### Post date: [August 5, 2016, 10:57am UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/7 "2016-08-05T10:57:05Z")

</div>

I changed my query, and I m using the request field now, my use case is simple: I want to filter my docs using a string for field verb and a string for field request.  
Something like

**SELECT count(\*) FROM table WHERE table.verb like 'GET' AND table.request like 'title-at-icagile' GROUP BY @timestamp**;

Is there a query to do that using ES?

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [August 5, 2016, 12:33pm UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/8 "2016-08-05T12:33:34Z")

</div>

Yes, you should be able to do that through [aggregations](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html). What have you tried so far?

If you find it hard to get into aggregations, you can also explore your data using Kibana, in which you can see the aggregations being generated for each visualisation and use these as a starting point.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [July 5, 2017, 10:29pm UTC](https://discuss.elastic.co/t/getting-the-number-of-visits-of-a-specific-route-in-nginx-using-elasticsearch/57257/9 "2017-07-05T22:29:49Z")

</div>


