Преобразование типа поля при агрегации в Elasticsearch
У меня есть набор документов, по которым я хотел бы выполнить агрегирование: суммировать значения поля "сессий". тип поля 'session' является строковым, и при выполнении агрегации его необходимо преобразовать в целочисленное поле.
Бывший документ:
{
"bounceRate": "100.0",
"avgSessionDuration": "0.0",
"sessions": "1",
}
Мой запрос:
{
"query": {
"match_all": {}
},
"aggs": {
"total_sessions": {
"sum": {
"script": {
"inline": "Float.parseFloat(doc['ga:sessions'].value)"
}
}
}
}
}
Ошибка:
{
"error": {
"root_cause": [
{
"type": "script_exception",
"reason": "failed to run inline script [Float.parseFloat(doc[sessions'].value)] using lang [groovy]"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "testindex",
"node": "0Kgq1cQKT2OvFSGu5E6ptw",
"reason": {
"type": "script_exception",
"reason": "failed to run inline script [Float.parseFloat(doc['sessions'].value)] using lang [groovy]",
"caused_by": {
"type": "missing_property_exception",
"reason": "No such property: Float for class: 02f31d7c14f9b59a358a82c6bbf3853fa90738ec"
}
}
}
]
},
"status": 500
}
Почему это показывает отсутствующее исключение свойства? Как ссылаться на поле "сессия" в скрипте?
ОБНОВЛЕНИЕ: решение состояло в том, чтобы выполнить надлежащее отображение перед индексацией, благодаря Val
для быстрого ответа.