본문 바로가기
Troubleshooting

[Elastic Search] Rejecting mapping update to...

by 가드 2022. 11. 7.
728x90

여러 개의 CloudWatch 로그 그룹을 Lambda를 통해 Elasticsearch에 적재하고 있었는데

이번에 Elasticsearch 5.X 버전을 사용하다. Elasticsearch 7.X 버전으로 업그레이드를 진행했다.

서비스 로그 파일들을 Bulk 색인 시 Elasticsearch에서 아래와 같은 에러가 발생되었다.

{
    "index": {
        "_index": "[<index_name>]",
        "_type": "[<log_file>]",
        "_id": "37179865679911174822595041378954569963025140112055009280",
        "status": 400,
        "error": {
            "type": "illegal_argument_exception",
            "reason": "Rejecting mapping update to [<index_name>] as the final mapping would have more than 1 type: [log-group-1, log-group-2]"
        }
    }
}

맵핑 타입이 많아 맵핑 업데이트를 반려시킨 에러였다. 무슨 문제일까? 문제없이 잘 되었던 로그 적재에 문제가 발생된 상황이었다.

 

Elasticsearch 5.X 버전에서 문제가 발생되지 않았고 Elasticsearch 7.X 버전으로 변경하면서부터 발생된 문제이기 때문에 버전별 차이가 발생한 거라고 판단하여 리서치를 했고 원인에 대해서 찾았는데 역시나 Elasticsearch 6.X부터 멀티 맵핑 타입을 지원하지 않아서 발생한 문제였다.

 

아래의 AWS support에서 찾을 수 있었다. 참고하자.

https://aws.amazon.com/premiumsupport/knowledge-center/opensearch-troubleshoot-cloudwatch-logs/

Resolution

I'm unable to stream multiple CloudWatch log groups to the same OpenSearch Service domain

여러 CloudWatch 로그 그룹을 동일한 OpenSearch Service 도메인으로 스트리밍이 불가하다.

스트리밍 되는 다양한 로그 그룹에 대해서 여러 인덱스를 생성하라고 제시되어 있다.

 

Lamba 함수 수정

var indexName = [
        'cwl-' + payload.logGroup.toLowerCase().split('/').join('-') + '-' + timestamp.getUTCFullYear(),
        ('0' + (timestamp.getUTCMonth() + 1)).slice(-2),
        ('0' + timestamp.getUTCDate()).slice(-2) 
        ].join('.');

 

인덱스 이름을 날짜별로 생성해서 스트리밍 될 수 있게 변경하였고 Elasticsearch에 정상적으로 적재되는 것을 확인했다.

300x250

'Troubleshooting' 카테고리의 다른 글

[JPA] N+1 문제  (1) 2022.11.12
[MySQL] Replication 동기화 시간 문제  (0) 2022.11.08
[Elastic Search] maximum shards open 에러  (0) 2022.11.08

댓글