TERM
Facets with Term Scripts
Allow to define a script for terms facet to process
the actual term that will be used in the term facet collection, and also
optionally control its inclusion or not.
The script can either return a boolean value, with
true to include it in the facet collection, and false to exclude it from the
facet collection.
Another option is for the script to return a string
controlling the term that will be used to count against. The script execution
will include the term variable which is the current field term used.
Here
is an example for script return a string:
POST
Method:
http://localhost:9200/mobiles/_search?pretty=true
{
"query":
{
"query_string": {
"query": "*a*"
}
},
"facets": {
"type": {
"terms": {
"field": "_type",
"script": "term + ' script'"
}
}
}
}
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": "nokia script",
"count": 4
},
{
"term": "micromax script",
"count": 1
}
]
}
}
}
Here
is an example for script return a Boolean:
POST
Method:
http://localhost:9200/mobiles/_search?pretty=true
{
"query":
{
"query_string": {
"query": "*a*"
}
},
"facets": {
"type": {
"terms": {
"field": "_type",
"script": "term == 'nokia' ? true : false"
}
}
}
}
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": 1,
"terms": [
{
"term": "nokia",
"count": 4
}
]
}
}
}
No comments:
Post a Comment