# Should I use elasticsearch as a core for faceted navigation-heavy website?

**URL:** <https://discuss.elastic.co/t/should-i-use-elasticsearch-as-a-core-for-faceted-navigation-heavy-website/22862>\
**Category:** Elasticsearch\
**Created:** [March 24, 2015, 3:38pm UTC](https://discuss.elastic.co/t/should-i-use-elasticsearch-as-a-core-for-faceted-navigation-heavy-website/22862 "2015-03-24T15:38:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dmitry](https://avatars.discourse-cdn.com/v4/letter/d/0ea827/32.png) [@Dmitry](https://discuss.elastic.co/u/Dmitry)\
**Post date:** [March 24, 2015, 3:38pm UTC](https://discuss.elastic.co/t/should-i-use-elasticsearch-as-a-core-for-faceted-navigation-heavy-website/22862/1 "2015-03-24T15:38:08Z")

</div>

Hello,

I'm evaluating elasticsearch for use in new project. I can see that it has  
all search features we need. Problem is that after reading documentation  
and forum I still can't understand whether elastic is suitable technology  
for us performance-wise. I'd be very grateful to get your opinion on that.

We're building a directory of businesses, similar to Yelp. We have 5m  
businesses, and main feature of our site is faceted search on different  
facets: geography (tens of thousands geo objects), business type (several  
thousand options), additional services offered by that business (hundreds)  
and so on. So for each request (combination of search parameters) we need  
to get search results, but also what options are available in each facet  
(for example, what business types are located are in selected geography)  
for user to be able to narrow down his search (example:  
[http://take.ms/oAZan](http://take.ms/oAZan)). Full text search (by business name for example) is  
used in very small percentage of requests, bulk of requests is exact match  
on one or several facets.

Based on the similar our project we expect 1-5m requests per day. All  
requests are highly diversified: no single page (combination of search  
params) constitutes more than 0,1% of total requests. We expect to be able  
to answer request in 200-300ms, so I guess request to elasticsearch should  
take no more than 100ms.

On our similar project we use big lookup table in database with all  
possible combinations of params mapped to search result count. For each  
request we generate all possible combinations of parameters to refine  
current search and then check lookup table to see if they have any results.

My questions are:

Is elastic search suitable for our purposes? Specifically, are aggregations  
meant to be used in large number of low-latency requests, or are they more  
like analytical feature, where response time is not that important? I ask  
that because in discussions of aggregation and faceting performance here  
and elsewhere response times are mentioned in 1-10s range, which is ok for  
analytics and infrequent searches, but obviously on ok for us.

How hard it is to get performance we need: 50 rps, 100ms response time for  
search+facets, on some reasonable hardware, taking into account big number  
of possible facet combinations and high diversification of requests? What  
kind of hardware should we expect to handle our loads? I understand that  
these are vague questions, but I just need some approximation. Is it more  
like 1 server with commodity hardware and simple configuration, or more  
like cloud of 10 servers and extensive tuning? For example, our lookup  
table solution works on 1 commodity server with 16gb of ram with almost  
default setup.

Thank you for your responses,  
Dmitry

--  
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](mailto:elasticsearch+unsubscribe@googlegroups.com).  
To view this discussion on the web visit [https://groups.google.com/d/msgid/elasticsearch/807801d4-2926-4e52-9161-dc82d3f33a75%40googlegroups.com](https://groups.google.com/d/msgid/elasticsearch/807801d4-2926-4e52-9161-dc82d3f33a75%40googlegroups.com).  
For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

---

<div class="post-metadata">

**Author:** ![Itamar\_Syn\_Hershko](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/itamar_syn_hershko/32/725_2.png) [@Itamar\_Syn\_Hershko](https://discuss.elastic.co/u/Itamar_Syn_Hershko)\
**Post date:** [March 24, 2015, 3:39pm UTC](https://discuss.elastic.co/t/should-i-use-elasticsearch-as-a-core-for-faceted-navigation-heavy-website/22862/2 "2015-03-24T15:39:17Z")

</div>

Short answer: yes. With properly sharded and scaled out environment, and  
using ES 1.4 or newer, you should be able to get those numbers.

--

Itamar Syn-Hershko  
[http://code972.com](http://code972.com) | @synhershko [https://twitter.com/synhershko](https://twitter.com/synhershko)  
Freelance Developer & Consultant  
[Lucene.NET](http://Lucene.NET) committer and PMC member

On Tue, Mar 24, 2015 at 5:38 PM, Dmitry [dmitry.bitman@gmail.com](mailto:dmitry.bitman@gmail.com) wrote:

> Hello,
> 
> I'm evaluating elasticsearch for use in new project. I can see that it has  
> all search features we need. Problem is that after reading documentation  
> and forum I still can't understand whether elastic is suitable technology  
> for us performance-wise. I'd be very grateful to get your opinion on that.
> 
> We're building a directory of businesses, similar to Yelp. We have 5m  
> businesses, and main feature of our site is faceted search on different  
> facets: geography (tens of thousands geo objects), business type (several  
> thousand options), additional services offered by that business (hundreds)  
> and so on. So for each request (combination of search parameters) we need  
> to get search results, but also what options are available in each facet  
> (for example, what business types are located are in selected geography)  
> for user to be able to narrow down his search (example:  
> [http://take.ms/oAZan](http://take.ms/oAZan)). Full text search (by business name for example) is  
> used in very small percentage of requests, bulk of requests is exact match  
> on one or several facets.
> 
> Based on the similar our project we expect 1-5m requests per day. All  
> requests are highly diversified: no single page (combination of search  
> params) constitutes more than 0,1% of total requests. We expect to be able  
> to answer request in 200-300ms, so I guess request to elasticsearch should  
> take no more than 100ms.
> 
> On our similar project we use big lookup table in database with all  
> possible combinations of params mapped to search result count. For each  
> request we generate all possible combinations of parameters to refine  
> current search and then check lookup table to see if they have any results.
> 
> My questions are:
> 
> Is Elasticsearch suitable for our purposes? Specifically, are  
> aggregations meant to be used in large number of low-latency requests, or  
> are they more like analytical feature, where response time is not that  
> important? I ask that because in discussions of aggregation and faceting  
> performance here and elsewhere response times are mentioned in 1-10s range,  
> which is ok for analytics and infrequent searches, but obviously on ok for  
> us.
> 
> How hard it is to get performance we need: 50 rps, 100ms response time for  
> search+facets, on some reasonable hardware, taking into account big number  
> of possible facet combinations and high diversification of requests? What  
> kind of hardware should we expect to handle our loads? I understand that  
> these are vague questions, but I just need some approximation. Is it more  
> like 1 server with commodity hardware and simple configuration, or more  
> like cloud of 10 servers and extensive tuning? For example, our lookup  
> table solution works on 1 commodity server with 16gb of ram with almost  
> default setup.
> 
> Thank you for your responses,  
> Dmitry
> 
> --  
> 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](mailto:elasticsearch+unsubscribe@googlegroups.com).  
> To view this discussion on the web visit  
> [https://groups.google.com/d/msgid/elasticsearch/807801d4-2926-4e52-9161-dc82d3f33a75%40googlegroups.com](https://groups.google.com/d/msgid/elasticsearch/807801d4-2926-4e52-9161-dc82d3f33a75%40googlegroups.com)  
> [https://groups.google.com/d/msgid/elasticsearch/807801d4-2926-4e52-9161-dc82d3f33a75%40googlegroups.com?utm\_medium=email&utm\_source=footer](https://groups.google.com/d/msgid/elasticsearch/807801d4-2926-4e52-9161-dc82d3f33a75%40googlegroups.com?utm_medium=email&utm_source=footer)  
> .  
> For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

--  
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](mailto:elasticsearch+unsubscribe@googlegroups.com).  
To view this discussion on the web visit [https://groups.google.com/d/msgid/elasticsearch/CAHTr4ZsOOMoJUDmdcH-zsL4EHymR6SUw6T3dKSs\_UHfVq0mtCw%40mail.gmail.com](https://groups.google.com/d/msgid/elasticsearch/CAHTr4ZsOOMoJUDmdcH-zsL4EHymR6SUw6T3dKSs_UHfVq0mtCw%40mail.gmail.com).  
For more options, visit [https://groups.google.com/d/optout](https://groups.google.com/d/optout).

---

<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 6, 2017, 12:24am UTC](https://discuss.elastic.co/t/should-i-use-elasticsearch-as-a-core-for-faceted-navigation-heavy-website/22862/3 "2017-07-06T00:24:26Z")

</div>

Closed on July 6, 2017, 12:24am UTC


