Most efficient query for counting

I have a 180 million records index, the only queries that I need to do
online are counting queries, over ranges and terms, there are no
analyzed fields.

What is the most efficient query I can use, I have a machine with 16G, and
the load is very small but when a request hits it must go as fast as
possible

Here is an example of a query:

{"query":
{"constant_score":
{"filter": {"bool": {"must": [
{"term": {"state": "ct"}},
{"term": {"most_recent_lender": "020"}},
{"range": {"exact_age": {"gte": "37", "lt": "198"}}},
{"range": {"mortgage_purchase_price": {"gte": "92000", "lt":
"450000"}}},
{"range": {"second_most_recent_mortgage_amount": {"gte": "30000", "lt":
"500000"}}},
{"range": {"purchase_second_mortgage_amount": {"gte": "0", "lt":
"64000"}}},
{"range": {"most_recent_mortgage_date": {"gte": "1980", "lt": "4022"}}}
]}}}}}

The number of fields may be up to 30 but the average will be 5-10

Are there any suggestions

Thank you

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Hello David,

If you only need to count the matches of the query, you can use the Count
API:
http://www.elasticsearch.org/guide/reference/api/count/

Or is it something else you're looking for?

Best regards,
Radu

http://sematext.com/ -- ElasticSearch -- Solr -- Lucene

On Mon, May 13, 2013 at 8:07 AM, David MZ david.mazvovsky@gmail.com wrote:

I have a 180 million records index, the only queries that I need to do
online are counting queries, over ranges and terms, there are no
analyzed fields.

What is the most efficient query I can use, I have a machine with 16G, and
the load is very small but when a request hits it must go as fast as
possible

Here is an example of a query:

{"query":
{"constant_score":
{"filter": {"bool": {"must": [
{"term": {"state": "ct"}},
{"term": {"most_recent_lender": "020"}},
{"range": {"exact_age": {"gte": "37", "lt": "198"}}},
{"range": {"mortgage_purchase_price": {"gte": "92000", "lt":
"450000"}}},
{"range": {"second_most_recent_mortgage_amount": {"gte": "30000",
"lt": "500000"}}},
{"range": {"purchase_second_mortgage_amount": {"gte": "0", "lt":
"64000"}}},
{"range": {"most_recent_mortgage_date": {"gte": "1980", "lt": "4022"}}}
]}}}}}

The number of fields may be up to 30 but the average will be 5-10

Are there any suggestions

Thank you

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

My question is more about performance rather then syntax

Any tips?

I am sure that here are things to speed up constant score type of queries

On May 13, 2013, at 9:26, Radu Gheorghe radu.gheorghe@sematext.com wrote:

Hello David,

If you only need to count the matches of the query, you can use the Count API:
http://www.elasticsearch.org/guide/reference/api/count/

Or is it something else you're looking for?

Best regards,
Radu

http://sematext.com/ -- ElasticSearch -- Solr -- Lucene

On Mon, May 13, 2013 at 8:07 AM, David MZ david.mazvovsky@gmail.com wrote:

I have a 180 million records index, the only queries that I need to do online are counting queries, over ranges and terms, there are no analyzed fields.

What is the most efficient query I can use, I have a machine with 16G, and the load is very small but when a request hits it must go as fast as possible

Here is an example of a query:

{"query":
{"constant_score":
{"filter": {"bool": {"must": [
{"term": {"state": "ct"}},
{"term": {"most_recent_lender": "020"}},
{"range": {"exact_age": {"gte": "37", "lt": "198"}}},
{"range": {"mortgage_purchase_price": {"gte": "92000", "lt": "450000"}}},
{"range": {"second_most_recent_mortgage_amount": {"gte": "30000", "lt": "500000"}}},
{"range": {"purchase_second_mortgage_amount": {"gte": "0", "lt": "64000"}}},
{"range": {"most_recent_mortgage_date": {"gte": "1980", "lt": "4022"}}}
]}}}}}

The number of fields may be up to 30 but the average will be 5-10

Are there any suggestions

Thank you

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to a topic in the Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US.
To unsubscribe from this group and all its topics, send an email to elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Ah, OK. I'd use a filter directly, without wrapping it in a constant_score
query. Also, since you have only "must" clauses in your filter, you might
want to try the AND
filterhttp://www.elasticsearch.org/guide/reference/query-dsl/and-filter/.
Not sure if it's any faster than the bool filter, though.

Best regards,
Radu

http://sematext.com/ -- ElasticSearch -- Solr -- Lucene

On Mon, May 13, 2013 at 9:34 AM, David Mz david.mazvovsky@gmail.com wrote:

My question is more about performance rather then syntax

Any tips?

I am sure that here are things to speed up constant score type of queries

On May 13, 2013, at 9:26, Radu Gheorghe radu.gheorghe@sematext.com
wrote:

Hello David,

If you only need to count the matches of the query, you can use the Count
API:
http://www.elasticsearch.org/guide/reference/api/count/

Or is it something else you're looking for?

Best regards,
Radu

http://sematext.com/ -- ElasticSearch -- Solr -- Lucene

On Mon, May 13, 2013 at 8:07 AM, David MZ david.mazvovsky@gmail.comwrote:

I have a 180 million records index, the only queries that I need to do
online are counting queries, over ranges and terms, there are no
analyzed fields.

What is the most efficient query I can use, I have a machine with 16G,
and the load is very small but when a request hits it must go as fast as
possible

Here is an example of a query:

{"query":
{"constant_score":
{"filter": {"bool": {"must": [
{"term": {"state": "ct"}},
{"term": {"most_recent_lender": "020"}},
{"range": {"exact_age": {"gte": "37", "lt": "198"}}},
{"range": {"mortgage_purchase_price": {"gte": "92000", "lt":
"450000"}}},
{"range": {"second_most_recent_mortgage_amount": {"gte": "30000",
"lt": "500000"}}},
{"range": {"purchase_second_mortgage_amount": {"gte": "0", "lt":
"64000"}}},
{"range": {"most_recent_mortgage_date": {"gte": "1980", "lt":
"4022"}}}
]}}}}}

The number of fields may be up to 30 but the average will be 5-10

Are there any suggestions

Thank you

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US
.
To unsubscribe from this group and all its topics, send an email to
elasticsearch+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Radu - re the and filter: it won't be better than bool in this case. It's
good for combining non-bitset filters (eg geo filters) but the bool filter
is better for combing bitset filters, like all of the filters listed in the
OP.

David: Currently you're using a "top-level" filter, ie the query executes,
and only then is the filter applied. I'd rewrite the query to use a
"filtered" query:

{
  query: {
    filtered: {
      query: { match_all: {}},
      filter: { bool: {...... }}
    }
  }
}

On Mon, May 13, 2013 at 9:16 AM, Radu Gheorghe
radu.gheorghe@sematext.comwrote:

Ah, OK. I'd use a filter directly, without wrapping it in a constant_score
query. Also, since you have only "must" clauses in your filter, you might
want to try the AND filterhttp://www.elasticsearch.org/guide/reference/query-dsl/and-filter/.
Not sure if it's any faster than the bool filter, though.

Best regards,
Radu

http://sematext.com/ -- ElasticSearch -- Solr -- Lucene

On Mon, May 13, 2013 at 9:34 AM, David Mz david.mazvovsky@gmail.comwrote:

My question is more about performance rather then syntax

Any tips?

I am sure that here are things to speed up constant score type of queries

On May 13, 2013, at 9:26, Radu Gheorghe radu.gheorghe@sematext.com
wrote:

Hello David,

If you only need to count the matches of the query, you can use the Count
API:
http://www.elasticsearch.org/guide/reference/api/count/

Or is it something else you're looking for?

Best regards,
Radu

http://sematext.com/ -- ElasticSearch -- Solr -- Lucene

On Mon, May 13, 2013 at 8:07 AM, David MZ david.mazvovsky@gmail.comwrote:

I have a 180 million records index, the only queries that I need to do
online are counting queries, over ranges and terms, there are no
analyzed fields.

What is the most efficient query I can use, I have a machine with 16G,
and the load is very small but when a request hits it must go as fast as
possible

Here is an example of a query:

{"query":
{"constant_score":
{"filter": {"bool": {"must": [
{"term": {"state": "ct"}},
{"term": {"most_recent_lender": "020"}},
{"range": {"exact_age": {"gte": "37", "lt": "198"}}},
{"range": {"mortgage_purchase_price": {"gte": "92000", "lt":
"450000"}}},
{"range": {"second_most_recent_mortgage_amount": {"gte": "30000",
"lt": "500000"}}},
{"range": {"purchase_second_mortgage_amount": {"gte": "0", "lt":
"64000"}}},
{"range": {"most_recent_mortgage_date": {"gte": "1980", "lt":
"4022"}}}
]}}}}}

The number of fields may be up to 30 but the average will be 5-10

Are there any suggestions

Thank you

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US
.
To unsubscribe from this group and all its topics, send an email to
elasticsearch+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Can you elaborate on the difference or point me where I Can read more about
this issue
Should this query be much faster? and do I need more memory for such
queries? how are the bounded I/O or Memory

On Mon, May 13, 2013 at 2:06 PM, Clinton Gormley clint@traveljury.comwrote:

Radu - re the and filter: it won't be better than bool in this case.
It's good for combining non-bitset filters (eg geo filters) but the bool
filter is better for combing bitset filters, like all of the filters listed
in the OP.

David: Currently you're using a "top-level" filter, ie the query executes,
and only then is the filter applied. I'd rewrite the query to use a
"filtered" query:

{
  query: {
    filtered: {
      query: { match_all: {}},
      filter: { bool: {...... }}
    }
  }
}

On Mon, May 13, 2013 at 9:16 AM, Radu Gheorghe <radu.gheorghe@sematext.com

wrote:

Ah, OK. I'd use a filter directly, without wrapping it in a
constant_score query. Also, since you have only "must" clauses in your
filter, you might want to try the AND filterhttp://www.elasticsearch.org/guide/reference/query-dsl/and-filter/.
Not sure if it's any faster than the bool filter, though.

Best regards,
Radu

http://sematext.com/ -- ElasticSearch -- Solr -- Lucene

On Mon, May 13, 2013 at 9:34 AM, David Mz david.mazvovsky@gmail.comwrote:

My question is more about performance rather then syntax

Any tips?

I am sure that here are things to speed up constant score type of
queries

On May 13, 2013, at 9:26, Radu Gheorghe radu.gheorghe@sematext.com
wrote:

Hello David,

If you only need to count the matches of the query, you can use the
Count API:
http://www.elasticsearch.org/guide/reference/api/count/

Or is it something else you're looking for?

Best regards,
Radu

http://sematext.com/ -- ElasticSearch -- Solr -- Lucene

On Mon, May 13, 2013 at 8:07 AM, David MZ david.mazvovsky@gmail.comwrote:

I have a 180 million records index, the only queries that I need to do
online are counting queries, over ranges and terms, there are no
analyzed fields.

What is the most efficient query I can use, I have a machine with 16G,
and the load is very small but when a request hits it must go as fast as
possible

Here is an example of a query:

{"query":
{"constant_score":
{"filter": {"bool": {"must": [
{"term": {"state": "ct"}},
{"term": {"most_recent_lender": "020"}},
{"range": {"exact_age": {"gte": "37", "lt": "198"}}},
{"range": {"mortgage_purchase_price": {"gte": "92000", "lt":
"450000"}}},
{"range": {"second_most_recent_mortgage_amount": {"gte": "30000",
"lt": "500000"}}},
{"range": {"purchase_second_mortgage_amount": {"gte": "0", "lt":
"64000"}}},
{"range": {"most_recent_mortgage_date": {"gte": "1980", "lt": "4022
"}}}
]}}}}}

The number of fields may be up to 30 but the average will be 5-10

Are there any suggestions

Thank you

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US
.
To unsubscribe from this group and all its topics, send an email to
elasticsearch+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US
.
To unsubscribe from this group and all its topics, send an email to
elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

On Mon, May 13, 2013 at 2:06 PM, Clinton Gormley clint@traveljury.comwrote:

Radu - re the and filter: it won't be better than bool in this case.
It's good for combining non-bitset filters (eg geo filters) but the bool
filter is better for combing bitset filters, like all of the filters listed
in the OP.

Thanks, Clint! I didn't know that. And since I wanted to learn more, I
found this very helpful article (note also the references at the bottom):
http://euphonious-intuition.com/2013/05/all-about-elasticsearch-filter-bitsets/

Putting the link here in case it helps other people as well :slight_smile:

Best regards,
Radu

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

I am still confused about the difference between using a filter and using a
filtered query
Can shed some light on this please

On Tue, May 14, 2013 at 9:56 AM, Radu Gheorghe
radu.gheorghe@sematext.comwrote:

On Mon, May 13, 2013 at 2:06 PM, Clinton Gormley clint@traveljury.comwrote:

Radu - re the and filter: it won't be better than bool in this case.
It's good for combining non-bitset filters (eg geo filters) but the bool
filter is better for combing bitset filters, like all of the filters listed
in the OP.

Thanks, Clint! I didn't know that. And since I wanted to learn more, I
found this very helpful article (note also the references at the bottom):

http://euphonious-intuition.com/2013/05/all-about-elasticsearch-filter-bitsets/

Putting the link here in case it helps other people as well :slight_smile:

Best regards,
Radu

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US
.
To unsubscribe from this group and all its topics, send an email to
elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Hey,

Filtered queries are using the filter along side query execution (what you
want in most cases).
Top level filters (the "filter" field in your query) are executed after
query execution. This allows you to get back these filtered results in the
"hits" field, but also to have facets operating on the query without the
filter being applied. In practice you have a top level filter for field
'age' between 20 and 25, which means, your "hits" array will only include
these results, but if you are facetting on the age field in the same search
request, the facet calculation will be done without the filter being
applied.

Hope this helps. If not, just ask further question.

--Alex

On Tue, May 14, 2013 at 9:04 AM, David MZ david.mazvovsky@gmail.com wrote:

I am still confused about the difference between using a filter and using
a filtered query
Can shed some light on this please

On Tue, May 14, 2013 at 9:56 AM, Radu Gheorghe <radu.gheorghe@sematext.com

wrote:

On Mon, May 13, 2013 at 2:06 PM, Clinton Gormley clint@traveljury.comwrote:

Radu - re the and filter: it won't be better than bool in this case.
It's good for combining non-bitset filters (eg geo filters) but the bool
filter is better for combing bitset filters, like all of the filters listed
in the OP.

Thanks, Clint! I didn't know that. And since I wanted to learn more, I
found this very helpful article (note also the references at the bottom):

http://euphonious-intuition.com/2013/05/all-about-elasticsearch-filter-bitsets/

Putting the link here in case it helps other people as well :slight_smile:

Best regards,
Radu

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US
.
To unsubscribe from this group and all its topics, send an email to
elasticsearch+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

So if my intention in to count the docs, I will get best performance from
the filtered query

I must say that my original query is very fast, how much boost are we
talking about, heuristically?

On Tue, May 14, 2013 at 10:27 AM, Alexander Reelsen alr@spinscale.dewrote:

Hey,

Filtered queries are using the filter along side query execution (what you
want in most cases).
Top level filters (the "filter" field in your query) are executed after
query execution. This allows you to get back these filtered results in the
"hits" field, but also to have facets operating on the query without the
filter being applied. In practice you have a top level filter for field
'age' between 20 and 25, which means, your "hits" array will only include
these results, but if you are facetting on the age field in the same search
request, the facet calculation will be done without the filter being
applied.

Hope this helps. If not, just ask further question.

--Alex

On Tue, May 14, 2013 at 9:04 AM, David MZ david.mazvovsky@gmail.comwrote:

I am still confused about the difference between using a filter and using
a filtered query
Can shed some light on this please

On Tue, May 14, 2013 at 9:56 AM, Radu Gheorghe <
radu.gheorghe@sematext.com> wrote:

On Mon, May 13, 2013 at 2:06 PM, Clinton Gormley clint@traveljury.comwrote:

Radu - re the and filter: it won't be better than bool in this case.
It's good for combining non-bitset filters (eg geo filters) but the bool
filter is better for combing bitset filters, like all of the filters listed
in the OP.

Thanks, Clint! I didn't know that. And since I wanted to learn more, I
found this very helpful article (note also the references at the bottom):

http://euphonious-intuition.com/2013/05/all-about-elasticsearch-filter-bitsets/

Putting the link here in case it helps other people as well :slight_smile:

Best regards,
Radu

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US
.
To unsubscribe from this group and all its topics, send an email to
elasticsearch+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.

--
You received this message because you are subscribed to a topic in the
Google Groups "elasticsearch" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/elasticsearch/AIURb0tfVHI/unsubscribe?hl=en-US
.
To unsubscribe from this group and all its topics, send an email to
elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

--
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 elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.