Упругие агрегации на подстроке

У меня есть поле, индексированное как String вasticsearch 5
Например 20090219, 20100416 так далее

Я могу сделать агрегацию этих данных, но я хочу агрегировать по подстроке.
это на
2009,2010

Я не хочу конвертировать в дату. Я хочу получить первым 4 персонажа и получить счет.
Это мой текущий код. Очень плохо знаком с Elasticsearch

$params['body']["aggs"]["Year"]["terms"]["field"] = "PublicationDate.keyword";
$params['body']["aggs"]["Year"]["terms"]["size"]  = 10;
$params['body']["aggs"]["Year"]["terms"]["order"]["_count"] = "desc";

1

Решение

Вы можете использовать эластичный поиск script особенность, чтобы достигнуть этого.

GET my-index/_search
{
"aggs" : {
"my-agg" : {
"terms" : {
"script": {
"inline": "doc['PublicationDate.keyword'].getValue().substring(0,4)"},
"size": 10,
"order" : { "_count" : "desc" }
}
}
}
}

Я не знаю эквивалент php скрипт для вышеприведенной команды, но поверьте, вы сможете заставить его работать в php,

0

Другие решения

это сделало задачу

$params['body']["aggs"]["PublicationYear"]["terms"]["script"] = "_value.substring(0,4)";
0

По вопросам рекламы [email protected]