Преобразование типа поля при агрегации в 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 для быстрого ответа.

0 ответов

Другие вопросы по тегам