Elasticsearch version tested:
- 7.1.1
- 7.2.0
Index mapping field:
"releaseDate" : {
"type" : "date",
"format" : "yyyy-MM-dd'T'HH:mm:ssXXX"
},
Pipeline:
{
"processors": [
{
"script": {
"lang": "painless",
"source": "ctx.releaseYear = ZonedDateTime.parse(ctx.releaseDate,DateTimeFormatter.ISO_DATE_TIME).getYear()"
}
}
]
}
Problem:
I create a new index that contains the above 'releaseDate' field and re-index data into it without any problems. When I do a generic search, I can see the new field 'releaseYear' in my results. When I do a more complex query that uses the 'releaseDate' field, I am getting an error:
{
"error": {
"root_cause": [
{
"type": "script_exception",
"reason": "runtime error",
"script_stack": [
"doc['releaseDate'].date.getYear()",
" ^---- HERE"
],
"script": "doc['releaseDate'].date.getYear()",
"lang": "painless"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "generic_v1",
"node": "CV44lJMOR-et8cdYzRb5bQ",
"reason": {
"type": "script_exception",
"reason": "runtime error",
"script_stack": [
"doc['releaseDate'].date.getYear()",
" ^---- HERE"
],
"script": "doc['releaseDate'].date.getYear()",
"lang": "painless",
"caused_by": {
"type": "illegal_argument_exception",
"reason": "Illegal list shortcut value [date]."
}
}
}
]
},
"status": 400
}
From search query:
{
"from": 0,
"size": 25,
"sort": [
{
"releaseDate": {
"order": "desc"
}
}
],
"query": {
"bool": {
"must": [
{
"range": {
"releaseDate": {
"lte": "now"
}
}
}
]
}
}
}
Any ideas what I might be doing wrong?