问题
I currently have something like:
"aggs": {
"group_by_myfield": {
"terms": {
"field": "myfield"
}
}
}
However the value for myfield is "alpha 1.0", "alpha 2.0", "beta 1.0". Now I want to only aggregate over the values "alpha", "beta". How do I do that? I tried:
"aggs": {
"group_by_myfield": {
"terms": {
"field": "myfield"
"script": "_value.split()[0]"
}
}
}
But I guess there is no split functionality. Any suggestions are welcome!
I found a similar question here which is unanswered as well.
回答1:
I managed to get it done using the link I pasted in my question:
GET _search
{
"size": 0,
"aggs": {
"group_by_myfield": {
"terms": {
"field": "myfield",
"script": "_value.replaceAll('\\\\s+.*','')"
}
}
}
}
来源:https://stackoverflow.com/questions/23256743/elasticsearch-aggregation-using-a-script-to-transform-field-value-being-aggregat