Tuesday, 11 February 2014

TERM Facets with Script Field

TERM Facets with Script Field

A script that provides the actual terms that will be processed for a given doc. A script_field (or script which will be used when no field or fields are provided) can be set to provide it.

Here is an example 1:

POST Method:

http://localhost:9200/mobiles/_search?pretty=true
{
    "query": {
        "query_string": {
            "query": "*a*"
        }
    },
    "facets": {
        "type": {
            "terms": {
                "script_field": "_source.name"
            }
        }
    }
}

Results:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "hits": {
    "total": 5,
    "max_score": 1,
    "hits": [
      {
        "_index": "mobiles",
        "_type": "nokia",
        "_id": "1",
        "_score": 1,
        "_source": {
          "name": "lumia 510"
        }
      },
      {
        "_index": "mobiles",
        "_type": "nokia",
        "_id": "2",
        "_score": 1,
        "_source": {
          "name": "lumia 520"
        }
      },
      {
        "_index": "mobiles",
        "_type": "nokia",
        "_id": "3",
        "_score": 1,
        "_source": {
          "name": "lumia 625"
        }
      },
      {
        "_index": "mobiles",
        "_type": "nokia",
        "_id": "4",
        "_score": 1,
        "_source": {
          "name": "lumia 720"
        }
      },
      {
        "_index": "mobiles",
        "_type": "micromax",
        "_id": "2",
        "_score": 1,
        "_source": {
          "name": "canvas"
        }
      }
    ]
  },
  "facets": {
    "type": {
      "_type": "terms",
      "missing": 0,
      "total": 5,
      "other": 0,
      "terms": [
        {
          "term": "lumia 720",
          "count": 1
        },
        {
          "term": "lumia 625",
          "count": 1
        },
        {
          "term": "lumia 520",
          "count": 1
        },
        {
          "term": "lumia 510",
          "count": 1
        },
        {
          "term": "canvas",
          "count": 1
        }
      ]
    }
  }
}

Here is an example 2:

POST Method:

http://localhost:9200/mobiles/_search?pretty=true
{
    "query": {
        "query_string": {
            "query": "*a*"
        }
    },
    "facets": {
        "type": {
            "terms": {
                "script_field": "_source['name']"
            }
        }
    }
}

Results:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "hits": {
    "total": 5,
    "max_score": 1,
    "hits": [
      {
        "_index": "mobiles",
        "_type": "nokia",
        "_id": "1",
        "_score": 1,
        "_source": {
          "name": "lumia 510"
        }
      },
      {
        "_index": "mobiles",
        "_type": "nokia",
        "_id": "2",
        "_score": 1,
        "_source": {
          "name": "lumia 520"
        }
      },
      {
        "_index": "mobiles",
        "_type": "nokia",
        "_id": "3",
        "_score": 1,
        "_source": {
          "name": "lumia 625"
        }
      },
      {
        "_index": "mobiles",
        "_type": "nokia",
        "_id": "4",
        "_score": 1,
        "_source": {
          "name": "lumia 720"
        }
      },
      {
        "_index": "mobiles",
        "_type": "micromax",
        "_id": "2",
        "_score": 1,
        "_source": {
          "name": "canvas"
        }
      }
    ]
  },
  "facets": {
    "type": {
      "_type": "terms",
      "missing": 0,
      "total": 5,
      "other": 0,
      "terms": [
        {
          "term": "lumia 720",
          "count": 1
        },
        {
          "term": "lumia 625",
          "count": 1
        },
        {
          "term": "lumia 520",
          "count": 1
        },
        {
          "term": "lumia 510",
          "count": 1
        },
        {
          "term": "canvas",
          "count": 1
        }
      ]
    }
  }
}