# Klout Search Powered by ElasticSearch, Play Framework, Scala and Akka

**URL:** <https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119>\
**Category:** Elasticsearch\
**Created:** [December 10, 2011, 4:02pm UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119 "2011-12-10T16:02:07Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![felipera](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/felipera/32/3038_2.png) [@felipera](https://discuss.elastic.co/u/felipera)\
**Post date:** [December 10, 2011, 4:02pm UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/1 "2011-12-10T16:02:07Z")

</div>

Hi everyone,

This week I released Klout's search using ElasticSearch and wrote a blog  
post about it:  
[http://geeks.aretotally.in/klout-search-elasticsearch-play-framework-scala-akka](http://geeks.aretotally.in/klout-search-elasticsearch-play-framework-scala-akka)

I hope you like it!

Thank you,  
Felipe [[http://twitter.com/\_felipera](http://twitter.com/_felipera)]

---

<div class="post-metadata">

**Author:** ![phobos182](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/phobos182/32/3011_2.png) [@phobos182](https://discuss.elastic.co/u/phobos182)\
**Post date:** [December 14, 2011, 1:24am UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/2 "2011-12-14T01:24:39Z")

</div>

The article is interesting, but light on details. How many documents? What is being indexed / searched? How many shards / servers / etc...?

---

<div class="post-metadata">

**Author:** ![felipera](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/felipera/32/3038_2.png) [@felipera](https://discuss.elastic.co/u/felipera)\
**Post date:** [December 14, 2011, 3:48am UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/3 "2011-12-14T03:48:28Z")

</div>

Hi Jeremy,

A little under 150 million documents. We are indexing topics (not a big  
dataset), most of the dataset.

10 servers, moving to 15 soon, 20 shards, a little over 1tb of indexed but  
that number should increase soon.

On the website we are not doing very complicated searches at this time. On  
our internal tool for Klout Perks we have pretty complicated searches based  
on a bunch of criterias like different values generated by our algorithms  
associated with each user, topics, geo location, etc. We also do some data  
exports using scrolling searches, mgets, etc. We should be adding more  
criterias to the public website sometime soon as well.

The internal tool has been using ElasticSearch for a while, it powers most  
of the eligiblity checks for Klout Perks but the public facing search has  
just been released recently.

Hope that clarifies some of your questions.

Thank you,  
Felipe

---

<div class="post-metadata">

**Author:** ![Diptamay](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/diptamay/32/2805_2.png) [@Diptamay](https://discuss.elastic.co/u/Diptamay)\
**Post date:** [December 14, 2011, 4:47am UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/4 "2011-12-14T04:47:13Z")

</div>

Hi Felipe

Thanks for sharing. I am curious to why you chose Play! over Node.js which  
is driving your main site. Also a bit confused from your article on how is  
Play! and Akka fitting into the whole equation. ES already does  
scatter-gather searching, so wondering how is Akka actors helping out.  
Wouldn't Node.js and ES would have been good enough?

Thanks  
Diptamay

On Tue, Dec 13, 2011 at 10:48 PM, Felipe Oliveira [felipera@gmail.com](mailto:felipera@gmail.com)wrote:

> Hi Jeremy,
> 
> A little under 150 million documents. We are indexing topics (not a big  
> dataset), most of the dataset.
> 
> 10 servers, moving to 15 soon, 20 shards, a little over 1tb of indexed but  
> that number should increase soon.
> 
> On the website we are not doing very complicated searches at this time. On  
> our internal tool for Klout Perks we have pretty complicated searches based  
> on a bunch of criterias like different values generated by our algorithms  
> associated with each user, topics, geo location, etc. We also do some data  
> exports using scrolling searches, mgets, etc. We should be adding more  
> criterias to the public website sometime soon as well.
> 
> The internal tool has been using Elasticsearch for a while, it powers most  
> of the eligiblity checks for Klout Perks but the public facing search has  
> just been released recently.
> 
> Hope that clarifies some of your questions.
> 
> Thank you,  
> Felipe

---

<div class="post-metadata">

**Author:** ![felipera](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/felipera/32/3038_2.png) [@felipera](https://discuss.elastic.co/u/felipera)\
**Post date:** [December 14, 2011, 5:04am UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/5 "2011-12-14T05:04:17Z")

</div>

Play/Scala/Akka were already powering a couple of other things at Klout  
like Perks' backend and admin interfaces so it was an easy choice. Play  
over Node.js is also a matter of expertise on the different teams we  
have. The Play/Scala applications also need to do some other things like  
querying data from HBase so just using the native JVM-friendly drivers make  
a lot of sense.

Initially I wanted to have the REST api running on ES as a plugin, similar  
to [http://www.elasticsearch.org/tutorials/2011/09/14/creating-pluggable-rest-endpoints.html](http://www.elasticsearch.org/tutorials/2011/09/14/creating-pluggable-rest-endpoints.html).  
But I found it to be unstable under load; I will be honest and I am not  
sure if the problem was with my configuration. Since I have deployed a few  
applications with Play querying ES using the native Java api I gave it a  
shot and that fixed all the issues I was having.

Does that answer your question?

---

<div class="post-metadata">

**Author:** ![felipera](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/felipera/32/3038_2.png) [@felipera](https://discuss.elastic.co/u/felipera)\
**Post date:** [December 14, 2011, 5:05am UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/6 "2011-12-14T05:05:18Z")

</div>

Little typo there, we are indexing topics (not a big dataset) and user  
profiles (most of the dataset).

---

<div class="post-metadata">

**Author:** ![Diptamay](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/diptamay/32/2805_2.png) [@Diptamay](https://discuss.elastic.co/u/Diptamay)\
**Post date:** [December 14, 2011, 5:11am UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/7 "2011-12-14T05:11:22Z")

</div>

Yep. Got it. Thanks for the quick reply.

So is this live now? Or I guess I don't have enough Klout to see my perks  
yet :). Was trying to see an actual business use case in action.

-Diptamay

On Wed, Dec 14, 2011 at 12:04 AM, Felipe Oliveira [felipera@gmail.com](mailto:felipera@gmail.com)wrote:

> Play/Scala/Akka were already powering a couple of other things at Klout  
> like Perks' backend and admin interfaces so it was an easy choice. Play  
> over Node.js is also a matter of expertise on the different teams we  
> have. The Play/Scala applications also need to do some other things like  
> querying data from HBase so just using the native JVM-friendly drivers make  
> a lot of sense.
> 
> Initially I wanted to have the REST api running on ES as a plugin, similar  
> to  
> [Elasticsearch Platform — Find real-time answers at scale | Elastic](http://www.elasticsearch.org/tutorials/2011/09/14/creating-pluggable-rest-endpoints.html).  
> But I found it to be unstable under load; I will be honest and I am not  
> sure if the problem was with my configuration. Since I have deployed a few  
> applications with Play querying ES using the native Java api I gave it a  
> shot and that fixed all the issues I was having.
> 
> Does that answer your question?

---

<div class="post-metadata">

**Author:** ![felipera](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/felipera/32/3038_2.png) [@felipera](https://discuss.elastic.co/u/felipera)\
**Post date:** [December 14, 2011, 6:45am UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/8 "2011-12-14T06:45:04Z")

</div>

In regards to ES use on Klout only the user and topics search is opened right now. The rest is used internally, we'll improving the public search soon.

Cheers!  
Felipe

---

<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, 3:45am UTC](https://discuss.elastic.co/t/klout-search-powered-by-elasticsearch-play-framework-scala-and-akka/6119/9 "2017-07-06T03:45:25Z")

</div>


