0

ES 5.1.2를 사용하고 date 필드에서 요일과 시간을 계산하고 동시에 시간대를 고려하려고합니다.ElasticSearch 무통 스크립팅을 사용하여 dayOfWeek 또는 timeOfDay를 계산하십시오.

내 첫 번째 스크립트는 def d = doc['my_field'].date; d.addHours(10); d.getDayOfWeek();

오류 메시지 나는 MutableDateTime d = doc['my_field'].date; d.addHours(10); d.getDayOfWeek();에 스크립트를 변경하면 오류 메시지가 없으면

"caused_by": { 
    "type": "illegal_argument_exception", 
    "reason": "unexpected token ['d'] was expecting one of [{<EOF>, ';'}]." 
}, 
"script_stack": [ 
    "MutableDateTime d = doc['relation_denstu. ...", 
    "    ^---- HERE" 
], 

이되는 방법을) (

"caused_by": { 
    "type": "illegal_argument_exception", 
    "reason": "Unable to find dynamic method [addHours] with [1] arguments for class [org.joda.time.MutableDateTime]." 
}, 
"script_stack": [ 
    "d.addHours(10); ", 
    " ^---- HERE" 
], 

을있는 AddHours을 찾을 수 있습니다 addHours으로 시간대를 조정하면 모든 것이 정상입니다. 그러나 동적으로 시간대를 조정하려고하면 모든 것이 실패합니다. 어떤 도움이 필요합니까?

답변

3

나는 그걸로 어려움을 겪었습니다. 이것은 Elastic 5에서 작동합니다 :

GET /unittesttg1_tg1_fq1/_search 
{ 
    "size": 0, 
    "aggs": { 
    "groupby": { 
     "terms": { 
     "script": "ZonedDateTime.ofInstant(Instant.ofEpochMilli(doc['LAST_MODIFIED_DATE'].value), ZoneId.of('+10:00')).getDayOfWeek()"   
     } 
    } 
    } 
} 
+0

thx –