Question

I'm wondering if I can use the ElasticSearch Facets features to replace to Group By feature used in rational databases or even in a Sphinx client?

If so, beside the official documentation, can someone point out a good tutorial to do so?

EDIT :

Let's consider an SQL table products in which I have the following fields :

  • id
  • title
  • description
  • price
  • etc.

I omitted the others fields in the tables because I don't want to put them into my ES index.

I've indexed my database with ElasticSearch.

A product is not unique in the index. We can have the same product with different price offers and I wish to group them by price range.

Was it helpful?

Solution

Facets gives you the number of the docs it a particular word is present for a particular field...

Now let's suppose you have an index named tweets, with type tweet and field "name"...

A facet query for the field "name" would be:

curl -XPOST "http://localhost:9200/tweets/tweet/_search?search_type=count" -d'
{
   "facets": {
      "name": {
         "terms": {
            "field": "name"
         }
      }
   }
 }'

Now the response you get is the as below

"hits": {
      "total": 3475368,
      "max_score": 0,
      "hits": []
   },
"facets": {
  "name": {
     "_type": "terms",
     "total": 3539206,
     "other": 3460406,
     "terms": [
        {
           "term": "brickeyee",
           "count": 9205
        },
        {
           "term": "ken_adrian",
           "count": 9160
        },
        {
           "term": "rhizo_1",
           "count": 9143
        },
        {
           "term": "purpleinopp",
           "count": 8747
        }
        ....
        ....

This is called term facet as this is term based count...There are other facets also which can be seen here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top