Elasticsearch 7.7 - 7.10 버전업 정리

hyeon·2020년 9월 18일
0

Elasticsearch 7.7 - 7.10 버전업 정리

Logging

'org.elasticsearch.action'의 로그 기본 레벨은 INFO

이전 버전에서는 DEBUG였습니다. 불필요하게 많은 로깅을 줄이기 위해 INFO로 변경되었습니다.

Mapping

동적 템플릿에 대한 유효성 검사

지금까지는 매핑되지 않는 필드만 있는 문서를 인덱싱 할 때만 동적 템플릿의 잘못된 구성이 발견됐습니다. Elasticsearch 8.0 이상에서는 동적 매핑은 업데이트 시 엄격한 유효성 검사를 받습니다. 잘못된 analyzer 세팅이나 알 수 없는 필드 유형 등의 잘못된 업데이트는 실패합니다. Elasticsearch 7.7 이상 버전의 경우 업데이트는 성공하지만 경고가 떨어집니다.

'enabled' 매핑 파라미터는 root 매핑에 의해 변경될 수 없음

root 매핑으로 enabled 매핑 파라미터를 바꾸려는 시도는 실패하며 에러를 반환합니다. 이전의 엘라스틱서치는 이러한 시도를 적용하진 않았지만, 에러를 반환하지도 않았습니다.
이러한 에러를 피하기 위해서는, 'enabled' 매핑 파라미터를 바꾸려는 시도를 하지 마십시오.

'include_in_parent'와 'include_in_root' 매핑 파라미터는 'nested' 필드에 의해 변경될 수 없음

'include_in_parent'나 'include_in_root' 매핑 파라미터를 바꾸려는 시도는 실패하며 에러를 반환합니다. 이전의 엘라스틱서치는 이러한 시도를 적용하진 않았지만, 에러를 반환하지도 않았습니다.
이러한 에러를 피하기 위해서는, 해당 매핑 파라미터를 바꾸려는 시도를 하지 마십시오.

필드매핑정보 API의 'local' 쿼리 파라미터를 사용할 수 없음

필드매핑정보 API의 'local' 쿼리 파라미터는 더이상 사용할 수 없으며 8.0 버전에서 사라집니다.

Setting

'thread_pool.listener.size'와 'thread_pool.listener.queue_size'를 더이상 사용할 수 없음

리스너 스레드풀은 더 이상 엘라스틱서치 내부에서 사용되지 않습니다. 그러므로 이 세팅도 사용할 수 없습니다. 당신의 노드 구성에서 이러한 설정을 제거할 수 있습니다.

'cluster.remote.connect' -> 'node.remote_cluster_client'

이전에는 'cluster.remote.connect'가 크로스 클러스터 검색/복제 환경에서 로컬 노드가 원격 클러스터 클라이언트 역할을 할 수 있는지 없는지에 대한 설정을 했습니다. 이 설정은 더 이상 사용되지 않으며, 'node.remote_cluster_client'가 같은 목적을 수행하며 로컬노드가 remote_cluster_clinet' 역할을 갖도록 합니다.

인증 영역의 'order'은 필수 구성 (in Elasticsearch 8.0)

'order' 설정은 Elasticsearch 8.0 부터 어떤 타입의 인증이라도 필수로 구성되어야 합니다. 'order'가 설정되지 않으면 노드가 시작되지 않습니다.

인증 영역의 'order'은 유니크 해야함 (in Elasticsearch 8.0)

'order' 설정은 Elasticsearch 8.0 부터 반드시 유니크해야합니다. 만약 하나 이상의 'order'이 같다면 노드는 시작되지 않습니다.

안전하지 않은 모니터링 비밀번호 설정 사용 중단

HTTP 내보내기 모니터링에 사용하는 'auth.password'를 더 이상 사용할 수 없으며 8.0.0 버전 이상부터는 제거됩니다. 'auth.secure_password' 설정을 사용하세요.

'node.local_storage' 설정을 더이상 사용할 수 없음

'node.local_storage' 설정을 더이상 사용할 수 없으며, 8.0 버전에서 모든 노드는 로컬스토리지를 필요로 합니다.

일부 X-Pack 설정을 더이상 사용할 수 없음

기본 X-Pack 라이센스는 항상 기본 배포에서 활성화되면 다음 설정들은 더이상 아무 효과가 없음.
{xpack.enrich.enabled, xpack.flattened.enabled, xpack.ilm.enabled, xpack.monitoring.enabled, xpack.rollup.enabled, xpack.slm.enabled, xpack.sql.enabled, xpack.transform.enabled, xpack.vectors.enabled}
만약 다른 인덱스 감시툴을 사용하기 위해 ILM을 비활성화 시키고 싶다면, 새롭게 소개된 'xpack.watcher.use_ilm_index_management'를 false로 설정하십시오.

built-in users: kibana -> kibana_system

키바다 로그인 사용자가 헷갈리는 실수가 많이 일어나서 혼란을 줄이고자 해당 계정의 이름을 바꾸었습니다.
새로운 kibana_system 계정은 이전의 kibana가 사용하던 비밀번호를 사용하지 않습니다. 따라서 반드시 비밀번호를 명확하게 지정해주세요.

built-in roles: kibana_user -> kinaba_admin

kibana_user 역할의 사용을 멈춰주세요.

dangling 인덱스를 자동 임포트가 기본적으로 비활성화

자동으로 dangling 인덱스를 임포트 하는 것은 안전하지 않습니다. 그래서 이제 기본적으로 비활성화 되었습니다. 해당 기능은 Elasticsearch 8.0.0에서 완전히 제거됩니다.
dangling 인덱스를 수동으로 다루려면 Dangling API (https://www.elastic.co/guide/en/elasticsearch/reference/7.x/indices.html#dangling-indices-api)를 사용하세요.
'gateway.auto_import_dangling_indices'를 true로 설정하여 dangling 인덱스 자동 임포트하고 이전 버전의 안전하지 않은 동작을 복구할 수 있습니다. 이 설정은 8.0.0에서 제거됩니다. 따라서 더이상 사용하지 않는 것을 추천합니다.

  • dangling 인덱스:
    클러스터에는 없지만 로컬 데이터 디렉토리에 저장된 샤드들 (지워졌어야 하는데 고아가 되어 남아있는 샤드들인듯)

'date_range' 필드에서 range 쿼리의 일관적인 반올림

'date_range' 필드에 대한 range 쿼리는 현재 순수 날짜 필드에 대한 해당 쿼리와 약간 다를 수 있습니다. 예를 들어, 밀리세컨즈 단위까지 지정하지 않음 date math나 dates를 사용할 때 발생합니다. date 필드에 대한 쿼리는 gt와 lte 경계에 대해 밀리세컨즈 단위로 반올림되지만, date_range 필드에서의 동일한 쿼리는 그렇지 않습니다. 하지만 이제 date_range의 동작은 date math와 rounding(문서)와 동일합니다.

파이프라인 집계 유효성 에러들

파이프라인 집계 유효성 검사가 coordinating 노드로 이동되었습니다. 이것의 에러는 500대 에러(Internal Server Error)를 반환했지만, 이제는 400대 에러(Bad Request)를 반환합니다. 또한 첫번째로 발생한 에러가 아닌 유효성 에러들의 리스팅을 반환합니다.

  • corrdinating 노드:
    본질적으로 로드밸런싱과 같은 역할. 데이터가 흩어져 있는 경우, 데이터 노드들의 처리결과를 모아 하나의 데이터 형태로 정제하여 반환한다. master, data, integer 세팅이 모두 false여야 한다.

'index.max_docvalue_fields_search'에 대한 누락된 검사

'index.max_docvalue_fields_search' 설정은 검색에서 docvalue_fields를 통해 검색할 수 있는 필드 수를 제한합니다. 이전에는 docvalues_fields가 최상위 검색 요청에 존재할 때만 해당 제한을 체크했습니다. 이제는 inner_hits 영역 또는 top_hits 집계에서도 제한을 적용합니다.

Highlighters

무시된 keyword 값은 더이상 하이라이트되지 않음

색인 도중 길이 때문에 키워드가 무시되었다면 ('ignore_above' 파라미터 적용), Elasticsearch는 더이상 해당값을 하이라이트하지 않습니다. 즉, 이것은 무사된 값에 하이라이트가 생성되지 않는다는 것을 의미합니다.

License 정보

기업 라이센스 정보가 /_xpack에 Platinum으로 표시

기본적으로 'GET /_license' 엔드포인트가 기업 라이센스를 Platinum으로 보여주고 있습니다. 그렇기 때문에 이전 클라이언트 (beats, kibana, logstash 포함) 새로운 라이센스 유형을 Platinum 라이센스인 것처럼 해석하는 것을 알 수 있습니다.

Aggregation

'indices:admin/create' 권한은 더이상 인덱스의 자동생성을 허락하지 않음

'indices:admin/create' 권한은 더이상 인덱스 자동생성을 허락하지 않습니다. 대신 create_index를 사용하세요.

'value_count' 집계 최적화

'value_count'에 사용되는 스크립트는 이제 숫자(숫자 필드 카운팅 시)와 GeoPoint(geo_point 필드 카운팅 시)를 제공받습니다. 이전에는 해당 값들을 항상 String 표현으로 받았습니다.

Indices

Elasticsearch에 'logs--' 및 'metrics--'에 대한 빌트인 템플릿 포함

각 priority가 100인 'logs--' 및 'metrics--'에 대한 빌트인 템플릿을 추가했습니다. Elastic Agent는 이러한 템플릿을 사용하여 데이터 스트림을 생성합니다.
Elastic Agent를 사용하는 경우, 빌트인 템플릿을 재정의하지 않도록 작업 인덱스에 100보다 낮은 priority를 지정하세요.
그렇지 않다면, 빌트인 템플릿을 실수로 적용하는 것을 피하거나, 중복하지 않는 인덱스 패턴을 사용하거나, 중복 패턴의 템플릿을 지정하기 위해서는 priority를 100보다 높게 설정하세요.
예를 들어, Elastic Agent를 사용하지 않고 logs_* 인덱스 패턴의 템플릿을 사용하고 싶다면, 당신의 템플릿의 priority를 200으로 지정하세요. 이것은 빌트인 템플릿 logs-- 이 아니라 당신의 템플릿이 적용될 수 있도록 해줍니다.

Script cache

'script.cache.max_size' 설정을 더이상 사용할 수 없음

해당 설정은 더이상 사용할 수 없으며, Elasticsearch 8.0.0에서 컨텍스트별로 설정됩니다.
'script.context.$CONTEXT.context_max_size'를 특정 컨텍스트에서 사용할 수 있습니다. 예를 들어, ingest 컨텍스트에서는 'script.context.ingest.context_max_size'를 사용합니다.

'script.cache.expire' 설정을 더이상 사용할 수 없음

해당 설정은 더이상 사용할 수 없으며, Elasticsearch 8.0.0에서 컨텍스트별로 설정됩니다.
'script.context.$CONTEXT.cache_expire'를 특정 컨텍스트에서 사용할 수 있습니다. 예를 들어, update 컨텍스트에서는 'script.context.update.cache_expire'를 사용합니다.

'script.max_compilations_rate' 설정을 더이상 사용할 수 없음

해당 설정은 더이상 사용할 수 없으며, Elasticsearch 8.0.0에서 컨텍스트별로 설정됩니다.
'script.context.$CONTEXT.max_compilations_rate'를 특정 컨텍스트에서 사용할 수 있습니다. 예를 들어, processor_conditional 컨텍스트에서는 'script.context.processor_conditional.max_compilations_rate'를 사용합니다.

create_doc, create, index, write 권한이 매핑작업에서 더이상 사용할 수 없음

Elasticsearch 8.0.0에서 create_doc, create, index, write 권한은 더이상 사용자가 인덱스 매핑을 명시적으로 업데이트하는 것을 허용하지 않습니다.
추가로, Elasticsearch 8.0.0에서 create_doc, create, index 권한은 사용자가 indexing 또는 ingest 중에 인덱스 매핑을 동적으로 업데이트 하는 것을 허용하지 않습니다.
해당 권한들은 Elasticsearch 8.0.0 이전까지는 매핑작업을 할 수 있지만, deprecation 경고가 반환될 것입니다.
사용자에게 명시적인 업데이트 작업을 허락하고자 한다면, manage 권한을 부여하십시오. 또한 색인 및 수집 동안 동적 인덱스 매핑을 허락하고 싶다면, auto_configure 권한과 인덱스 템플릿을 사용하세요. 이것은 인덱스 템플릿의 매핑 설정을 통해 인덱스 매핑을 동적으로 매핑할 수 있도록 해줍니다.

Networking

*.tcp.keep_idle과 *.tcp.keep_interval 제한

{network,transport,http}.tcp.keep_idle과 {network,transport,http}.tcp.keep_interval은 이제 최고 300 (약 5분)까지로 제한됩니다.

Repository Stats API를 더이상 사용할 수 없음

7.8.0에서 실험적인 API로 소개되었던 Repository Stats API가 출시되지 않습니다. 이 API는 7.10.0에 추가된 Repository Metering API(https://www.elastic.co/guide/en/elasticsearch/reference/7.x/repositories-metering-apis.html)로 대체됩니다. Stats API는 7.10.0에서부터 사용되지 않으며 8.0.0에서 제거됩니다.

0개의 댓글