6.x/8. Breaking Changes

v6.0-17. Scripting changes

drscg 2017. 12. 20. 17:15

Groovy, JavaScript, and Python languages removededit

The Groovy, JavaScript, and Python scripting languages were deprecated in elasticsearch 5.0 and have now been removed. Use painless instead.

elasticsearch 5.0 에서 Groovy, JavaScript, 그리고 Python scripting language가 deprecate되었고, 이제 제거되었다. 대신 painless를 사용하자.

Native scripts removededit

Native scripts have been removed. Instead, implement a ScriptEngine.

Native script가 제거되었다. 대신 ScriptEngine 를 구현하자.

Date fields now return datesedit

doc.some_date_field.value now returns ReadableDateTimes instead of milliseconds since epoch as a long. The same is true for doc.some_date_field[some_number]. Use doc.some_date_field.value.millis to fetch the milliseconds since epoch if you need it.

이제 doc.some_date_field.value 는 epoch 이후 millisecond를 long 으로 반환하는 대신ReadableDateTime 를 return한다. doc.some_date_field[some_number] 도 마찬가지이다. 그 값이 필요하다면, doc.some_date_field.value.millis 를 사용하자.

Removed access to index internal via the _index variableedit

The _index variable has been removed. If you used it for advanced scoring, consider writing a Similarity plugin.

_index 변수는 제거되었다. score 계산에 사용했다면, Similarity plugin의 구현을 고려하자.

Script Settingsedit

All of the existing scripting security settings have been removed. Instead they are replaced with script.allowed_types and script.allowed_contexts.

기존의 모든 scripting security 설정은 제거되었다. 대신 script.allowed_types 와 script.allowed_contexts 로 대체되었다.

lang can no longer be specified when using a stored script as part of a requestedit

The lang variable can no longer be specified as part of a request that uses a stored script otherwise an error will occur. Note that a request using a stored script is different from a request that puts a stored script. The language of the script has already been stored as part of the cluster state and an id is sufficient to access all of the information necessary to execute a stored script.

lang 변수는 저장된 script를 사용하는 request의 일부로 더 이상 지정할 수 없다. 그렇지 않으면 error가 발생한다. 저장된 script를 사용하는 request는 저장된 script를 put하는 request와 다르다. script의 language는 이미 cluster state의 일부로 저장되어 있으며 id 는 저장된 script를 실행하는 데 필요한 모든 정보에 액세스하기에 충분하다.

'lang` can no longer be used when putting, getting, or deleting a stored scriptedit

Stored scripts can no longer have the lang parameter specified as part of the url when performing PUT, GET, and DELETE actions on the _scripts/ path. All stored scripts must have a unique id as the namespace is only id now and no longer lang and id.

저장된 script는 _scripts/ 경로에서 PUT, GET, DELETE action을 수행할 때 url의 일부분으로 lang 매개 변수를 더 이상 지정할 수 없다. namespace가 이제는 id 이고, 더 이상 lang 과 id 가 아니기 때문에 모든 저장된 script는 고유한 id 를 가져야 한다.

Stored search template apis removededit

The PUT, GET and DELETE _search/template apis have been removed. Store search templates with the stored scripts apis instead.

PUT, GET, DELETE _search/template API는 제거되었다. 대신 stored scripts API와 함께 search template을 저장하자.

For example, previously one might have stored a search template with the following:

예를 들자면, 이전에는 다음처럼 search template을 저장했었다.

PUT /_search/template/custom_template
{
  "query": {
    "match": {
      "f1": "{{f1}}"
    }
  }
}

And instead one would now use the following:

대신, 이제는 다음과 같이 사용해야 한다.

PUT /_scripts/custom_template
{
  "script": {
    "lang": "mustache",
    "source": {
      "query": {
        "match": {
          "f1": "{{f1}}"
        }
      }
    }
  }
}


'6.x > 8. Breaking Changes' 카테고리의 다른 글

v6.0-19. Settings changes  (0) 2017.12.20
v6.0-18. Search and Query DSL changes  (0) 2017.12.20
v6.0-16. REST changes  (0) 2017.12.20
v6.0-15. Reindex changes  (0) 2017.12.20
v6.0-14. Plugins changes  (0) 2017.12.20