<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Lisa Larribas - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Lisa Larribas - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/kr/search-labs/author/lisa-larribas</link>
    </image>
    <link>https://www.elastic.co/kr/search-labs/author/lisa-larribas</link>
    <atom:link href="https://www.elastic.co/kr/search-labs/rss/author/lisa-larribas.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[kr]]></language>
    <lastBuildDate>Tue, 29 Sep 2026 07:37:05 GMT</lastBuildDate>
  <item>
    <title><![CDATA[매핑 충돌로 인한 데이터 스트림 재색인]]></title>
    <description><![CDATA[데이터 스트림을 재색인하여 Elasticsearch 매핑 충돌을 해결하는 방법을 알아보세요. 이 블로그에서는 재색인 프로세스와 새 데이터가 올바르게 매핑되는지 확인하는 방법을 설명합니다.]]></description>
    <content:encoded><![CDATA[<p>필드에서 매핑 충돌이 발생하면, 해당 필드가 Elastic Common Schema–표준(ECS-standard)을 따르든 데이터 소스별로 다르든 관계없이 개발자 도구를 사용하여 데이터를 재색인해야 합니다. 이러한 충돌은 데이터 수집 후 다운스트림 기능에 부정적인 영향을 미쳐 부정확한 결과를 초래하거나 시각화, 대시보드, 보안 앱 및 집계와 같은 기능에서 전체 데이터 세트를 사용하지 못하게 할 수 있습니다. 이 블로그 게시물에서는 재색인 프로세스를 자세히 설명합니다.</p><p>이 블로그의 콘텐츠는 Elastic 버전 9.2.8 및 8.19.14와 Filestream Integration 버전 2.3.0 및 1.2.0을 사용해 개발 및 검증되었습니다.</p><p><strong>중요 사항:</strong> 사용 환경에 따라 일부 단계는 특정 수정이 필요할 수 있습니다. 또한 Filestream Integration 버전 2.3.3부터 <code>@package</code> 구성 요소 템플릿에서 동적 템플릿이 제거되었음을 유의하세요.</p><p>재색인 프로세스를 시작하기 전에 환경의 현재 저장 공간 할당을 고려하는 것이 중요합니다. 아래에 설명된 단계는 기존 백킹 인덱스의 복사본을 생성하는 과정을 포함하며, 이 복사본은 <a href="https://www.elastic.co/docs/manage-data/lifecycle/data-tiers">핫 티어</a>에 임시로 저장됩니다.</p><p><u><strong>Elasticsearch 데이터 계층</strong></u></p><ul><li><p><strong>핫(Hot): </strong>핫 티어는 시계열 데이터의 Elasticsearch 진입점으로, 가장 최근에 자주 검색되는 데이터를 저장합니다. 핫 티어 노드는 빠른 읽기 및 쓰기 속도가 필요하므로 더 많은 리소스와 빠른 저장 공간(SSD)가 필요합니다. 이 티어는 필수이며, 새 데이터 스트림 인덱스는 여기에 자동 할당됩니다.</p></li><li><p><strong>웜(Warm): </strong>시계열 데이터는 핫 티어의 최근 색인된 데이터보다 쿼리 빈도가 낮아지면 웜 티어로 이동할 수 있습니다. 웜 티어에는 일반적으로 최근 몇 주간의 데이터가 저장됩니다. 업데이트는 여전히 허용되지만 빈도는 낮습니다. 웜 티어의 노드는 일반적으로 핫 티어의 노드만큼 빠를 필요는 없습니다. 복원력을 위해 웜 티어의 인덱스는 하나 이상의 복제본을 사용하도록 구성해야 합니다.</p></li><li><p><strong>콜드(Cold): </strong>검색 빈도가 낮은 데이터는 웜 티어에서 콜드 티어로 이동할 수 있습니다. 콜드 티어는 검색 기능은 유지되지만, 검색 속도보다는 저장 공간 비용 절감을 우선시합니다. 또는 콜드 티어에 검색 가능한 스냅샷 대신 복제본이 있는 일반 인덱스를 저장할 수 있습니다. 이를 통해 웜 티어에 비해 디스크 공간 요구 사항을 줄이지 않고도 오래된 데이터에 대해 더 저렴한 하드웨어를 사용할 수 있습니다.</p></li><li><p><strong>프로즌(Frozen):</strong>쿼리 빈도가 낮거나 더 이상 쿼리되지 않는 데이터는 남은 수명 주기 동안 콜드 티어에서 프로즌 티어로 이동합니다. 이 티어는 스냅샷 리포지토리와 부분적으로 마운트된 인덱스를 사용하여 데이터를 저장하고 로드하므로 로컬 저장 공간 및 비용을 절감하면서도 검색 기능을 유지합니다. 프로즌 티어에서의 검색은 일반적으로 콜드 티어보다 느립니다. Elasticsearch가 스냅샷 리포지토리에서 프로즌 데이터를 가져와야 할 수 있기 때문입니다. 프로즌 티어 전용 노드를 사용하는 것이 좋습니다.</p></li></ul><h2>필수 조건: 충돌이 발생하는 필드를 파악합니다</h2><p>매핑 충돌이 있는 필드를 확인하려면 <strong>Stack Management -&gt; Data view -&gt; logs-*</strong>로 이동합니다. (logs-* Data view는 <em>logs-</em> 접두사가 붙은 데이터 중 가장 상위 계층입니다.) 충돌이 있는 경우 노란색 상자가 표시됩니다. <strong>충돌 보기</strong>를 클릭하거나 <strong>검색</strong> 상자 옆의 <strong>필드 유형</strong> 상자에서 <strong>충돌</strong>을 선택할 수 있습니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7aa17311023e1ae3/6a170feaa929cf24fbae0aa9/7d41594682b601a30a9544b8db678f118b0146ab-2048x720.png" alt="매핑 충돌 경고 및 필드 유형 목록과 함께 로그 인덱스 패턴을 보여주는 인터페이스입니다. 뷰 충돌과 필드 유형 충돌에 초점을 맞추고 있습니다." /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb4106cf39e1be69b/6a170feb6f7f047b74914932/41ad800daa6fc244a1123ba7538820bff5de6788-747x182.png" alt="필드 이름 log.offset을 나타내는 테이블 행으로, 유형 키워드가 있고 충돌로 길게 표시되어 있습니다." /><p>노란색 <strong>충돌</strong> 버튼을 클릭하면 어떤 인덱스가 어떤 매핑 유형과 연관되어 있는지 표시됩니다.</p><p>이 상황(필드가 <code>keyword</code>와(과) <code>long</code>로 모두 매핑되는 경우)은 일반적으로 특정 매핑 유형이 관련 <a href="https://www.elastic.co/docs/manage-data/data-store/data-streams">데이터 스트림</a>에 대한 <a href="https://www.elastic.co/docs/manage-data/data-store/templates#component-templates">구성 요소 템플릿</a>에 정의되기 전에 데이터를 수집했기 때문에 발생합니다. 이러한 경우 Elasticsearch는 동적 템플릿을 기반으로 매핑을 설정하려고 시도합니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltdcec2cd42e2e858a/6a170feda929cff2e4ae0aad/9973c1935aa52292c1ace09a8e9c0b31ad99e7a2-2048x1085.png" alt="서로 다른 유형에 대한 경고와 각 유형에 대한 인덱스가 나열된 표가 있는 log.offset 필드를 보여주는 화면입니다." /><p>필드에 적합한 매핑을 결정하려면 해당 필드가 ECS 필드인 경우 <a href="https://www.elastic.co/docs/reference/ecs/ecs-field-reference">ECS 필드 참조</a>를 통한 검증이 필요합니다. 해당 필드가 ECS 필드가 아닌 경우 올바른 매핑을 결정하기 위해 해당 값을 검토해야 합니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltc22eb597f97cbb24/6a170feed7c02291c5de657c/3c77d0a1520bd1ad17e7ffa1480ecf5e224953e1-418x360.png" alt="" /><p>예시의 <code>log.offset</code>와(과) 같은 필드가 ECS에 문서화되어 있지 않은 경우 다음 단계는 해당 필드의 값을 조사하고, 충돌하는 매핑 유형 중 가장 많은 인덱스를 가진 유형을 확인하고, 다른 인덱스의 구성 요소 템플릿을 검토하는 것입니다.</p><p>일반적으로 가장 많은 인덱스와 연결된 매핑 유형이 올바른 유형이지만, 이를 검증하기 위해 해당 필드의 값을 확인하는 것이 좋습니다. 매핑 유형(예: <code>long</code>)의 유효성을 확인하려면 필드 값이 해당 유형에 적합한지도 확인해야 합니다. 이 검증은 <strong>Discover</strong>를 사용하여 해당 필드를 검색함으로써 수행할 수 있습니다. 동일한 필드를 포함하는 다른 데이터 스트림을 검토하는 것도 추가적인 확인에 도움이 될 수 있습니다.</p><p>매핑 문제가 있는 필드의 값을 검토하려면 앞서 언급한 노란색 <strong>충돌</strong> 버튼으로 돌아가서 <strong>충돌</strong> 버튼을 클릭하고, 백킹 인덱스 중 하나를 선택한 다음 <strong>Discover </strong> 세션에 붙여 넣습니다. Kibana 쿼리 언어(KQL) 문은 다음 스크린샷과 같이 <strong><code>_index</code></strong><strong>:</strong> 필드 구분 기호를 포함해야 합니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4b1966dbd35b7264/6a170ff00c4857919a01ab52/781f63b34a9abd427ceb896484da29af446e3326-2048x1063.png" alt="화면에는 유형 충돌에 대한 경고와 함께 log.offset 필드가 표시되며, 각 유형에 대한 인덱스를 나열한 표가 포함되어 있습니다." /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltdf3bb65faeb1e94b/6a170ff214b2701bfbe3c6c3/b7b0cb847c1694ab605c61a538722f5be004ec86-2048x909.png" alt="시간 기반 히스토그램과 타임스탬프 및 log.offset 값이 포함된 로그 항목 테이블을 보여주는 화면입니다." /><h2>새 백킹 인덱스 사용자 정의 구성 요소 템플릿 준비</h2><p>데이터 스트림의 매핑 충돌을 해결하려면 먼저 관련 <code>@package</code> 구성 요소 템플릿을 살펴봅니다. <strong>Stack Management -&gt; 인덱스 관리 -&gt; 구성 요소 템플릿</strong>에서 확인할 수 있습니다. 데이터 스트림을 검색하고 해당 <code>@package</code> 링크를 선택합니다. 이 템플릿에는 필드에 대한 매핑이 기본적으로 포함되어 있으며, 매핑 불일치가 발생하는 경우는 흔하지 않지만 더 적절한 유형을 간과할 수 있습니다.</p><p>해당 필드에 필요한 필드 중첩 및 매핑이 템플릿에 포함되어 있는지 검토합니다. 예를 들어 템플릿에서 <code>log.offset</code>을(를) <code>keyword</code>(으)로 잘못 표기한 경우 이것이 문제의 원인입니다.</p><p><strong>중요:</strong> <code>@package</code>/관리형 템플릿을 수정하는 것은 권장되지 않으므로 향후 모든 데이터에 대해 매핑 유형(예: <code>log.offset</code>)을(를) 수정하려면 <code>@custom</code> 구성 요소 템플릿을 사용하거나 생성해야 합니다.</p><ul><li><p><code>@package</code>/관리형 템플릿을 수정하는 것은 권장하지 않습니다. 통합을 최신 버전으로 업데이트하면 <code>@package</code> 템플릿에 대한 변경 사항이 덮어쓰여지기 때문입니다. 따라서 <code>@custom</code> 템플릿을 사용하는 것이 좋습니다.</p></li><li><p>데이터 스트림에서 매핑 충돌이 발생하는 경우 누락된 필드(ECS 및 비ECS) 중첩 또는 매핑을 데이터 스트림의 <code>@custom</code> 구성 요소 템플릿에 추가해야 합니다. 이 템플릿이 아직 없는 경우 생성하고 필드에 대한 올바른 매핑 유형을 지정해야 합니다.</p></li><li><p>Data view에 여러 충돌이 있는 경우 데이터 스트림에 필요한 모든 누락된 매핑을 동시에 적용하여 재색인을 여러 번 수행하지 않고 한 번만 수행합니다.<code>@custom</code> 구성 요소 템플릿에 적절한 데이터 입력을 위한 항목이 있으면 향후 모든 데이터 수집이 동일한 매핑 지침을 따르게 됩니다.</p></li></ul><p><code>@custom</code> 구성 요소 템플릿을 생성하거나 사용 중이고 데이터가 채워져 있는지 확인하려면 <strong>인덱스 템플릿</strong>으로 이동하여 해당 데이터 스트림의 이름을 입력하고 데이터 스트림에서 사용 중인 적절한 <code>@custom</code> 템플릿을 클릭합니다. 템플릿이 아직 생성되지 않은 경우 노란색 상자가 나타나면 UI를 통해 템플릿을 생성할 수 있습니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt17b6cb8aa8f905c2/6a170ff4964cea702708bc97/bea7cb172227bebc28146e3f2f016e112f34cba5-2048x720.png" alt=" 인덱스 템플릿의 요약, 인덱스 패턴, 우선순위 값, 데이터 스트림 설정 및 구성 요소 템플릿 목록을 보여주는 화면이며, 특히 logs‑filestream.generic@custom 항목에 초점을 맞추고 있습니다." /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf5b67199089093f4/6a170ff5d7c0220575de6580/e8f63a2e396efbe7f1e62dc08a137a22700be484-2048x296.png" alt=" '구성 요소 템플릿' 탭이 선택되어 있고 사용자 정의 템플릿이 존재하지 않는다는 메모가 표시된 인덱스 관리 인터페이스를 보여주는 화면입니다. '구성 요소 템플릿 만들기'에 초점을 맞추고 있습니다." /><p>아래 스크린샷은 <strong>구성 요소 템플릿 만들기</strong>를 선택했을 때 나타나는 다음 페이지입니다. 첫 페이지의 기본 설정을 그대로 두고 <strong>매핑</strong> 또는 <strong>다음</strong>을 클릭하여 <strong>매핑</strong> 페이지에 도달할 때까지 진행합니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltca2924bc41cac541/6a170ff7dc55decfd6e00ec5/822f1d864302aa4be438c13756b8372f43fa1b0d-2048x1275.png" alt="" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltee1067cb282ae0af/6a170ff82b835f55bff4b2e5/affa2f1214af516a5a6b571ab813628ed7649275-2048x1235.png" alt="템플릿 매핑" /><p>새로 들어오는 필드에 대한 매핑을 명시적으로 설정하거나 매핑 충돌이 있는 필드를 업데이트하려면, 인덱스 수명 주기 정책에 설정된 구성으로 인해 데이터 스트림이 롤오버될 때 충돌이 발생하는 필드에 대한 항목이 필요합니다.</p><p>아래 내용은 파일스트림 데이터 스트림의 <code>@custom</code> 구성 요소 템플릿에서 <code>log.offset</code> 필드의 매핑을 설정합니다. 필요하다면 이 데이터 세트에 대해 사용자 정의 필드를 추가하거나 적합한 매핑으로 <code>@package</code> 에서 필요한 필드를 추가하세요. 이 예에서 오프셋을 <code>Long</code>으로 설정하면 필드 유형은 <code>Numeric</code>이 되고 숫자 유형은 <code>Long</code>이 됩니다. <strong>필드 추가</strong>를 클릭한 다음 해당 영역 바깥을 클릭하여 계속 진행하세요.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltee1067cb282ae0af/6a170ff82b835f55bff4b2e5/affa2f1214af516a5a6b571ab813628ed7649275-2048x1235.png" alt="워크플로우에서 '매핑' 단계를 선택한 구성 요소 템플릿 생성 인터페이스를 보여주는 화면입니다." /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt611a10bd7567d211/6a170ffa964cea257008bc9d/ea2975ee4e40ac0e10c4170d2a23125101f7f8da-2048x1136.png" alt=": 워크플로우에서 '매핑' 단계를 선택한 구성 요소 템플릿 생성 인터페이스를 보여주는 화면입니다" /><p>필요한 필드를 모두 추가했으면 클릭하여 검토하고 준비가 되면 <strong>구성 요소 템플릿 만들기</strong> 선택합니다. 이 단계부터 수집되는 모든 새 데이터는 <code>log.offset</code> 이(가) <code>long</code> (으)로 설정됩니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt3a0c86021cc53e0e/6a170ffcc1e8a57703f8839f/bdf8b8290b0c064c9d88990194b15232ffe85709-2048x1027.png" alt=" 템플릿 검토 Elasticsearch" /><h2>새 백킹 인덱스 구조 생성</h2><p>새 백킹 인덱스에는 데이터 스트림의 구성 요소 템플릿과 ECS <code>ecs@mappings</code> 구성 요소 템플릿의 기존 매핑이 모두 포함되어야 합니다. <code>ecs@mappings</code> 구성 요소 템플릿은 이전 구성 요소 템플릿에 포함되지 않았을 수 있는 추가 매핑을 모두 처리하기 위해 데이터 스트림 구성 요소 다음에 적용됩니다.</p><p>데이터 스트림의 <code>@package</code> 매핑에 대한 브라우저 탭으로 이동합니다. (<strong>Stack Management -&gt; 인덱스 관리 -&gt; 구성 요소 템플릿 -&gt; </strong><strong><code>logs-filestream.generic@package</code></strong><strong> -&gt; 관리 -&gt; 편집</strong>으로 이동합니다.) 해당 탭에서 <strong>검토</strong> 섹션을 클릭한 다음 <strong>요청</strong>을 클릭하고 마지막으로 오른쪽에 있는 <strong>복사</strong> 버튼을 클릭합니다. 구성 요소 템플릿의 JSON 콘텐츠를 복사하면 <code>log.offset</code> 필드 매핑을 업데이트하는 동안 나머지 필드 매핑 및 설정이 유지됩니다. 이 JSON은 새로 재색인된 백킹 인덱스의 기본 구조를 형성합니다.</p><p><strong>중요: </strong>템플릿의 JSON을 복사하지 않고 재색인 작업을 계속 진행하면 <code>log.offset</code> 충돌은 해결되지만 현재 매핑의 무결성이 유지되지 않아 통합 과정에서 새로운 충돌이 발생하여 원래 문제를 해결하기 위한 이중 작업이 발생하게 됩니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1de7b9b0e375867e/6a170ffd8b73cb61f318a0f7/402b0431b0e19374e9b28a4374ed51dfa5fa44ba-2048x897.png" alt="워크플로우에서 '검토' 단계를 선택한 구성 요소 템플릿 생성 인터페이스를 보여주는 화면입니다. " /><p>두 번째 브라우저 탭을 열고 개발자 도구로 이동한 다음 복사한 콘텐츠를 붙여 넣습니다. 이제 붙여 넣은 내용을 다음과 같이 정리합니다.</p><p><strong>요청 수정</strong></p><p><strong>1. 인덱스 이름:</strong> <code>_component_template/logs-filestream.generic@package</code> 을(를) 재색인하려는 백킹 인덱스의 이름으로 바꾸고 끝에 <code>-1</code> 을(를) 추가합니다. 예를 들어 <code>PUT &lt;backing index to reindex&gt;-1</code> 을(를) 사용합니다.</p><ul><li><p>추가된 <code>-1</code>은(는) 재색인을 의미하며 인덱스 생성 날짜를 기준으로 하는 기본 ILM 롤오버 설정과 충돌하지 않습니다.</p></li></ul><p><strong>2. 설정:</strong> <code>"template"</code> (3번째 줄)와(과) 전체 JSON 페이로드의 마지막 중괄호를 제거합니다(3번째 줄은 <code>"settings": {</code> (으)로 시작해야 합니다).</p><ul><li><p>설정 섹션의 내부 내용을 <code>"index.codec": "best_compression"</code> (으)로 바꿉니다. 이 작업을 수행하면 인덱스 생성 시 Elastic의 최적 압축률이 적용됩니다.</p></li><li><p><code>"index.lifecycle.name": "logs"</code> 에 추가하고 <code>"index.lifecycle.rollover_alias": ""</code> 에 대한 줄도 추가합니다.</p><ol><li><p><code>"index.lifecycle.name": "logs"</code> 항목은 새 백킹 인덱스에 로그 ILM 정책을 적용합니다. 로그를 사용하지 않는 경우 ILM 정책 이름을 수정합니다.</p></li><li><p><code>"index.lifecycle.rollover_alias": ""</code> 은(는) 이 백킹 인덱스가 롤오버되지 않으므로 비어 있지만, 핫 티어 이후 다음 ILM 단계로의 ILM 롤오버 오류를 방지하려면 이 설정이 필요합니다.</p></li></ol></li></ul><p><strong>3. 구조:</strong> 이제 요청에 <code>Settings</code> 섹션과 <code>Mappings</code> 섹션이 모두 포함되어야 합니다. <code>"mappings": {</code> 안에는 <code>"dynamic_templates"</code> 와(과) 하드코딩된 필드와 해당 매핑이 포함된 <code>"properties"</code> 섹션이 있어야 합니다.</p><p><strong>4. 동적 템플릿 수정: </strong>현재 동적 템플릿 섹션에는 다음에 <code>ecs@mappings </code>동적 템플릿이 추가될 때 덮어쓰기될 수 있는 필드에 대한 항목이 포함되어 있어 중복 및 불필요한 추가 줄이 발생합니다.</p><ul><li><p><code>"_embedded_ecs-data_stream_to_constant": {</code> (이)라는 제목의 두 번째 섹션을 제외한 <code>"dynamic_templates"</code> 의 모든 섹션을 제거합니다.</p></li><li><p>위에서 설명한 것과 동일한 프로세스를 반복하여 <code>@package</code> 구성 요소 템플릿에 대한 동적 매핑을 수집하되 이번에는 <code>ecs@mappings</code> 구성 요소 템플릿에 대한 동적 매핑을 수집합니다.</p><ul><li><p><code>ecs@mappings</code> 구성 요소 템플릿의 UI에서 매핑의 전체 내용을 복사하여 작업 중인 개발 도구 <code>dynamic_templates</code> 섹션에 붙여 넣고 중복되거나 불필요한 줄을 적절히 제거하는 것이 더 쉬울 수 있습니다. <code>"_embedded_ecs-data_stream_to_constant": {</code> 항목 뒤에 이러한 동적 템플릿 설정 내용을 포함합니다.<code>dynamic_templates</code> 섹션은 개발 도구의 아래 샘플 콘텐츠와 매우 유사해야 합니다.</p></li></ul></li><li><p><strong>만약 </strong><strong><code>dynamic_templates</code></strong>이(가)<strong> 포함되지 않거나 완전히 제거되지 않으면 </strong>다른 필드(아래 스크린샷 참조)에 <code>text</code>와(과)<code>keyword</code>이(가) 이중으로 매핑됩니다. 이는 <code>dynamic_templates</code> 섹션이 포함된 경우의 적절한 매핑과 대조됩니다. 남은 부분은 <code>"mappings"</code> 아래의 <code>"properties"</code> 섹션이어야 합니다. 또한 필드가 이중으로 매핑되어 Data view에서 문제가 발생하고(이미 이렇게 매핑되어 있지 않은 경우) 추가적인 매핑 충돌이 발생합니다.</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltfb7494f882d7e358/6a170fffa6c2b93e46e797d2/24e972cd0fc8eadf943b21cfdd80a5d435e705aa-2048x994.png" alt="화면 분할 방식의 코드 편집기로, 왼쪽에는 Elasticsearch 명령어가, 오른쪽에는 인덱스 매핑이 표시됩니다. 화살표는 매핑에서 텍스트 필드 유형을 가리키고, 다른 화살표는 키워드 하위 필드 유형을 가리킵니다." /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltcaca899f8d92e72b/6a1710010c485745e901ab5a/aac13fbe882516e5ed5b5b1b5271c0ae34e80b04-1890x2048.png" alt=": logs-*에 대한 인덱스 패턴 페이지를 보여주는 화면으로, 매핑 충돌에 대한 경고가 표시되며, 필드 테이블에서 agent.ephemeral_id 및 agent.id에 대한 '키워드, 텍스트' 유형 목록에 초점을 맞추고 있습니다." /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2c692786ab74f1ca/6a171002964ceaa53c08bca1/c43d6f61c8ece4de2d51657f239a0c34ced07cdb-1928x1452.png" alt="logs-* 인덱스 패턴 페이지 화면으로, 매핑 충돌 경고가 표시됩니다. 화살표가 host.ip 필드에 대한 'ip, 텍스트' 유형 목록을 가리킵니다." /><p><strong>5. 메타데이터 제거:</strong> 마지막 섹션( <code>"_meta"</code>)와(과) <code>"version"</code> 섹션(있는 경우)을 삭제합니다.</p><p><strong>6. 서식 지정:</strong> 나머지 섹션을 자동으로 들여쓰고, 성공적인 실행을 방해하는 불필요한 중괄호를 조정하거나 제거합니다.
</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0906ffe338df1a9d/6a1710046f7f042aac914936/ebe1573647500de75315e7655256a0db9604c40d-2048x1402.png" alt="Elasticsearch 인덱스 설정 및 매핑을 보여주는 코드 편집기입니다. 오른쪽에 드롭다운 메뉴가 열려 있고, 화살표가 메뉴의 '자동 들여쓰기' 옵션을 가리키고 있습니다." /><p><strong>7. 매핑 변경:</strong> <code>"properties"</code> 섹션으로 이동하여 <code>"log"</code> 을(를) 찾은 다음 그 아래에 중첩된 <code>"offset"</code> 을(를) 찾습니다. 유형을 <code>keyword</code> 에서 <code>long</code> (으)로 변경하고 <code>"ignore_above": 1024,</code> (이)라고 표시된 줄 항목(쉼표 포함)을 제거합니다. 이전에 만든 <code>@custom</code> 구성 요소 템플릿에 두 개 이상의 항목이 추가되었다면 여기에 해당 항목을 포함합니다.</p><p>이제 개발자 도구 콘솔 화면이 아래 예시와 유사해야 합니다.</p>PUT .ds-logs-filestream.generic-default-2026.04.14-000001-1
{
  "settings": {
    "index.codec": "best_compression",
    "index.lifecycle.name": "logs",
    "index.lifecycle.rollover_alias": ""
  },
  "mappings": {
    "dynamic_templates": [
      {
        "_embedded_ecs-data_stream_to_constant": {
          "path_match": "data_stream.*",
          "mapping": {
            "type": "constant_keyword"
          }
        }
      },
      {
        "ecs_timestamp": {
          "mapping": {
            "ignore_malformed": false,
            "type": "date"
          },
          "match": "@timestamp"
        }
      },
      {
        "ecs_message_match_only_text": {
          "path_match": [
            "message",
            "*.message"
          ],
          "mapping": {
            "type": "match_only_text"
          },
          "unmatch_mapping_type": "object"
        }
      },
      {
        "ecs_non_indexed_keyword": {
          "path_match": [
            "*event.original"
          ],
          "mapping": {
            "index": false,
            "type": "keyword",
            "doc_values": false
          }
        }
      },
      {
        "ecs_non_indexed_long": {
          "path_match": [
            "*.x509.public_key_exponent"
          ],
          "mapping": {
            "index": false,
            "type": "long",
            "doc_values": false
          }
        }
      },
      {
        "ecs_ip": {
          "path_match": [
            "ip",
            "*.ip",
            "*_ip"
          ],
          "mapping": {
            "type": "ip"
          },
          "match_mapping_type": "string"
        }
      },
      {
        "ecs_wildcard": {
          "path_match": [
            "*.io.text",
            "*.message_id",
            "*registry.data.strings",
            "*url.path"
          ],
          "mapping": {
            "type": "wildcard"
          },
          "unmatch_mapping_type": "object"
        }
      },
      {
        "ecs_path_match_wildcard_and_match_only_text": {
          "path_match": [
            "*.body.content",
            "*url.full",
            "*url.original"
          ],
          "mapping": {
            "fields": {
              "text": {
                "type": "match_only_text"
              }
            },
            "type": "wildcard"
          },
          "unmatch_mapping_type": "object"
        }
      },
      {
        "ecs_match_wildcard_and_match_only_text": {
          "mapping": {
            "fields": {
              "text": {
                "type": "match_only_text"
              }
            },
            "type": "wildcard"
          },
          "unmatch_mapping_type": "object",
          "match": [
            "*command_line",
            "*stack_trace"
          ]
        }
      },
      {
        "ecs_path_match_keyword_and_match_only_text": {
          "path_match": [
            "*.title",
            "*.executable",
            "*.name",
            "*.working_directory",
            "*.full_name",
            "*file.path",
            "*file.target_path",
            "*os.full",
            "*email.subject",
            "*vulnerability.description",
            "*user_agent.original"
          ],
          "mapping": {
            "fields": {
              "text": {
                "type": "match_only_text"
              }
            },
            "type": "keyword"
          },
          "unmatch_mapping_type": "object"
        }
      },
      {
        "ecs_date": {
          "path_match": [
            "*.timestamp",
            "*_timestamp",
            "*.not_after",
            "*.not_before",
            "*.accessed",
            "created",
            "*.created",
            "*.installed",
            "*.creation_date",
            "*.ctime",
            "*.mtime",
            "ingested",
            "*.ingested",
            "*.start",
            "*.end",
            "*.indicator.first_seen",
            "*.indicator.last_seen",
            "*.indicator.modified_at",
            "*threat.enrichments.matched.occurred"
          ],
          "mapping": {
            "type": "date"
          },
          "unmatch_mapping_type": "object"
        }
      },
      {
        "ecs_path_match_float": {
          "path_match": [
            "*.score.*",
            "*_score*"
          ],
          "mapping": {
            "type": "float"
          },
          "path_unmatch": "*.version",
          "unmatch_mapping_type": "object"
        }
      },
      {
        "ecs_usage_double_scaled_float": {
          "path_match": "*.usage",
          "mapping": {
            "scaling_factor": 1000,
            "type": "scaled_float"
          },
          "match_mapping_type": [
            "double",
            "long",
            "string"
          ]
        }
      },
      {
        "ecs_geo_point": {
          "path_match": [
            "*.geo.location"
          ],
          "mapping": {
            "type": "geo_point"
          }
        }
      },
      {
        "ecs_flattened": {
          "path_match": [
            "*structured_data",
            "*exports",
            "*imports"
          ],
          "mapping": {
            "type": "flattened"
          },
          "match_mapping_type": "object"
        }
      },
      {
        "all_strings_to_keywords": {
          "mapping": {
            "ignore_above": 1024,
            "type": "keyword"
          },
          "match_mapping_type": "string"
        }
      }
    ],
    "properties": {
      "input": {
        "properties": {
          "type": {
            "ignore_above": 1024,
            "type": "keyword"
          }
        }
      },
      "@timestamp": {
        "ignore_malformed": false,
        "type": "date"
      },
      "ecs": {
        "properties": {
          "version": {
            "ignore_above": 1024,
            "type": "keyword"
          }
        }
      },
      "log": {
        "properties": {
          "file": {
            "properties": {
              "inode": {
                "ignore_above": 1024,
                "type": "keyword"
              },
              "path": {
                "ignore_above": 1024,
                "type": "keyword"
              },
              "device_id": {
                "ignore_above": 1024,
                "type": "keyword"
              },
              "fingerprint": {
                "index": false,
                "type": "keyword"
              }
            }
          },
          "offset": {
            "type": "long"
          },
          "level": {
            "ignore_above": 1024,
            "type": "keyword"
          }
        }
      },
      "data_stream": {
        "properties": {
          "namespace": {
            "type": "constant_keyword"
          },
          "type": {
            "type": "constant_keyword"
          },
          "dataset": {
            "type": "constant_keyword"
          }
        }
      },
      "event": {
        "properties": {
          "original": {
            "index": false,
            "type": "keyword",
            "doc_values": false
          },
          "module": {
            "type": "constant_keyword",
            "value": "filestream"
          },
          "dataset": {
            "type": "constant_keyword",
            "value": "filestream.generic"
          }
        }
      },
      "message": {
        "type": "match_only_text"
      },
      "tags": {
        "ignore_above": 1024,
        "type": "keyword"
      }
    }
  }
}<p>콘솔 화면이 예시와 비슷해지면(사용자 환경에 맞는 추가 사용자 정의 필드 및 사용자 정의 값이 포함된 경우), 새 백킹 인덱스의 셸을 생성하는 명령을 실행하고, 일시 중지하여 발생하는 모든 오류를 해결합니다.</p><h2>재색인 프로세스 시작</h2><p>새 백킹 인덱스의 기본 구조가 성공적으로 생성되었으므로, 다음 단계는 재색인을 수행하고 매핑 충돌을 해결하는 것입니다.</p><p><strong>중요:</strong> 매핑 충돌이 발생한 백킹 인덱스가 가장 최근에 생성된 인덱스이고 현재 쓰기 인덱스인 경우(예: 백킹 인덱스의 끝 번호가 -000001인 경우), 데이터 스트림을 롤오버해야 합니다. 현재 문서가 입력되고 있는 쓰기 인덱스는 라이브 백킹 인덱스이므로 수정할 수 없기 때문입니다.</p><p>이제 이전에 생성된 <code>@custom</code> 구성 요소 템플릿을 통해 새 쓰기 인덱스에 올바른 필드 매핑이 적용되었으므로 모든 새 문서에 이 변경 사항이 반영됩니다.</p><p>이 작업은 다음을 실행하여 수행합니다: </p>POST &lt;full data stream name&gt;/_rollover<p>그 예는 다음과 같습니다. </p>POST logs-filestream.generic-default/_rollover<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0e0ae084fe6ade43/6a171006a6c2b91078e797d6/22abc1a2f6de0420aa0d56ac498894111df7f4fd-2048x330.png" alt="롤오버 결과" /><p>재색인은 기존 백킹 인덱스의 데이터를 동일한 명명 규칙을 사용하는 새 인덱스로 복사하는 작업으로, 일반적으로 필요한 변경 사항을 적용하기 위해 수행됩니다. 이러한 수정 사항에는 구성 요소 템플릿 업데이트 또는 데이터 처리를 위한 새로운 인제스트 파이프라인 추가 등이 포함될 수 있습니다.</p><p>다음으로, 잘못된 매핑이 있는 백킹 인덱스에서 새 백킹 인덱스로 데이터가 복사됩니다. 원래 백킹 인덱스는 롤오버되었으므로 더 이상 새 문서를 추가할 수 없습니다. 새 백킹 인덱스는 동일한 명명 규칙을 따르므로 데이터 가시성과 무결성을 유지하면서 올바른 ILM 정책을 적용하지만, 재색인되었음을 나타내는 <code>-1</code> 접미사가 포함됩니다.</p><p>필요에 따라 인덱스 이름을 조정하고 다음 코드를 콘솔에 붙여 넣습니다. <code>wait_for_completion=false</code> 을(를) 포함하면 문서 복사 진행 상황을 추적하여 남은 재색인 시간을 추정하는 데 도움이 됩니다. 이 설정이 없으면 아래의 <code>GET _tasks</code> 명령을 사용하여 상태를 추적할 수 없으며 <code>GET &lt;backing index name&gt;-1/_count</code> 을(를) 사용하여 최신 백킹 인덱스의 문서 개수만 확인할 수 있습니다.</p><p><strong>중요: </strong>재색인 프로세스 중 문제가 발생하는 경우 재색인 명령을 다시 실행하지 마세요. 다시 실행하면 프로세스가 재시작되고 <code>-1</code>(으)로 끝나는 인덱스에 중복 레코드가 생성됩니다. 다시 시작해야 하는 경우 먼저 끝에 <code>-1</code>이(가) 붙은 인덱스를 삭제한 다음 앞의 <code>PUT</code> 명령을 실행하여 새 백킹 인덱스 셸을 다시 생성하세요.</p>POST _reindex?wait_for_completion=false
{
  "source": {
    "index": "&lt;source backing index&gt;"
  },
  "dest": {
    "index": "&lt;new backing index&gt;-1"
  }
}

i.e.
POST _reindex?wait_for_completion=false
{
  "source": {
    "index": ".ds-logs-filestream.generic-default-2026.04.13-000001"
  },
  "dest": {
    "index": ".ds-logs-filestream.generic-default-2026.04.13-000001-1"
  }
}<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb30fd97a045b6008/6a171007cf4f2566d6b2d22b/22f9b1f762802ecd20faa7c7c1f76c9d1444aba5-2048x530.png" alt=" 작업 출력" /><p>실행 시 응답에 작업 ID가 포함됩니다. 이 ID를 사용하여 재색인 프로세스를 모니터링할 수 있습니다. <code>GET _tasks/&lt;task ID&gt;</code></p><p>재색인 기간은 원래 인덱스의 데이터 양에 따라 달라집니다. 완료 여부는 <code>GET</code> 명령을 실행할 때 <code>"completed": true</code>을(를) 확인하여 추적할 수 있으며, 두 명령은 유사한 출력을 생성해야 합니다.</p><p><code>GET _tasks/&lt;task ID&gt;</code></p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4d40766e48cc0813/6a17100960084ba9043c4642/dbf0fb0a560a78236440b8c3de68cdf5c83e6d7a-2048x824.png" alt="작업 요약" /><p>문서 개수에 대한 재색인 프로세스가 완료되었으므로 다음 단계는 새 백킹 인덱스와 해당 특정 필드에 대한 매핑이 올바른지 확인하는 것입니다.</p>GET &lt;backing index&gt;-1/_mapping<p>그 예는 다음과 같습니다.</p>GET .ds-logs-filestream.generic-default-2026.04.13-000001-1/_mapping<p><code>log.offset</code> 에 대한 매핑이 아래와 같이 표시되는지 확인할 수 있습니다. 다른 필드에 단일 매핑 항목만 있는지(<code>text</code> 와(과) <code>keyword</code> 모두 아님) 확인하려면 이전 <code>PUT</code> 명령의 동적 템플릿 섹션에 포함되지 않은 필드와 비교합니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltc156907e9635e4a9/6a17100b60084b59673c464e/db5c12c0a651e804a916d517e6e260e49a8b835a-2048x1121.png" alt=" 매핑 집중" /><p>재색인 대상인 백킹 인덱스에 문서 개수가 많은 경우 해당 문서가 새 백킹 인덱스로 복사되는 상태를 확인하는 것이 유용합니다. 다음 두 가지 개발자 도구 명령어를 사용하여 문서 개수를 비교함으로써 이를 확인할 수 있습니다.</p><p><code>GET .ds-logs-filestream.generic-default-2026.04.14-000001/_count</code></p><p><code>GET .ds-logs-filestream.generic-default-2026.04.14-000001-1/_count</code></p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbc27c4da42ddc33d/6a17100c7d8d67e0ad70e816/a0e49ac79edb0abf9fe99d0e6fd35e96d0e3e0e5-2048x880.png" alt="" /><p>개수가 일치하고 올바른 매핑이 있는지 확인되면 데이터 스트림을 업데이트하여 새 백킹 인덱스를 포함시킵니다. 이렇게 하면 인덱스 관리에서 고립된 백킹 인덱스가 생성되어 ILM 정책이 해당 백킹 인덱스에 적용되지 않는 것을 방지할 수 있습니다.</p><ul><li><p>성공하면 true라는 확인 응답이 반환됩니다.</p></li></ul>POST _data_stream/_modify
{
  "actions": [
    {
      "add_backing_index": {
        "data_stream": "logs-filestream.generic-default",
        "index": ".ds-logs-filestream.generic-default-2026.04.14-000001-1"
      }
    }
  ]
}<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1bb6db6c761628fb/6a17100e7d8d67533770e81a/0aa3233377c0175258d37eaa661d56cf9f310d5e-2048x1288.png" alt="" /><p>다음 명령을 사용하여 새 백킹 인덱스가 추가되었는지 확인하고 <code>ilm_policy</code>이(가) 올바른지 확인합니다.</p>GET _data_stream/logs-filestream.generic-default<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7f4208ae6d7bf331/6a171010961e696241c4cfeb/af8b75cf260f6f088c28a78da86ad31527e0bfd5-2048x839.png" alt="" /><p>다음 명령을 사용하여 백킹 인덱스의 ILM 상태를 확인합니다.</p><ul><li><p>최근에 생성되었으므로 인덱스가 핫 상태인 것은 정상입니다(8번 또는 10번 줄 검토).</p></li></ul>GET .ds-logs-filestream.generic-default-2026.04.14-000001-1/_ilm/explain<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt953e1a062a040311/6a171012acf0885905be9c29/cd181a31001c7a3ee2b0599a7388909ce5b50baf-2048x972.png" alt="" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd398451578d070c9/6a1710140e2e492dc041a204/20f6e7632804f173533e655f0292c3c540f26597-2048x894.png" alt="" /><p>다음을 실행하여 백킹 인덱스를 핫 티어에서 해당 데이터 스트림에 대한 ILM 정책의 핫 단계 이후에 적합한 다음 티어로 전환하세요. 아래 <code>current_step</code> 의 <code>phase</code>, <code>action</code>, <code>name</code> 에 대한 구체적인 값은 위 스크린샷의 11번, 13번, 15번 줄에서 각각 참조할 수 있습니다.</p><p><code>next_step</code> 값은 인덱스가 전환될 다음 ILM 단계 또는 데이터 티어를 나타냅니다.</p><p>그 예는 다음과 같습니다.</p>POST _ilm/move/.ds-logs-filestream.generic-default-2026.04.14-000001-1
{
  "current_step": {
    "phase": "hot",
    "action": "rollover", 
    "name": "check-rollover-ready"
  },
  "next_step": {
    "phase": "warm" 
  }
}<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt246a6538585234f1/6a1710160c4857ddc001ab60/7ae60b900ce1d0b46ce26ec301901bc8a9ef750c-2048x1249.png" alt="" /><ul><li><p>필수는 아니지만, 안전 조치로 백킹 인덱스가 다음 단계로 이동하여 더 이상 핫 티어가 아닌지 확인하기 위해 <code>_ilm/explain</code> 명령을 다시 실행할 수 있습니다.</p></li></ul><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf77bba4d9b495048/6a17101867045b3b7d45c2c1/58a460cf2ec443223ea68ba7e7166a7cf9d8c97a-2048x915.png" alt="" /><p>다음 조건이 충족되면 매핑 충돌이 발생했던 원래 백킹 인덱스를 안전하게 삭제할 수 있습니다.</p><ol><li><p>새 백킹 인덱스가 성공적으로 생성되었습니다.</p></li><li><p>문서가 새 인덱스로 이동되었으며 문서 수가 일치합니다.</p></li><li><p>매핑이 수정되었습니다(데이터 스트림 특정 및 ECS 모두).</p></li><li><p>데이터 스트림에는 새 백킹 인덱스가 통합되었습니다.</p></li><li><p>ILM 정책이 적용되어 인덱스가 핫 단계에서 벗어났습니다.</p></li></ol><p><strong>중요:</strong> 또는 원본 인덱스를 삭제하기 전에 <strong>Data view</strong> 페이지를 확인할 수 있습니다. <code>logs-*</code> 을(를) 선택하고 재색인된 백킹 인덱스(끝자리가 <code>-1</code>인 인덱스)가 <strong><code>long</code></strong> 섹션에 나타나는지 확인합니다. 원본 백킹 인덱스는 여전히 <strong><code>keyword</code></strong> 아래에 있어야 합니다. 재색인된 백킹 인덱스가 <strong><code>long</code></strong> 섹션에 없으면 이전 단계를 다시 검토하고 필요한 수정을 합니다.</p><p>그 예는 다음과 같습니다.</p>DELETE .ds-logs-filestream.generic-default-2026.04.14-000001<img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt835a79be274513a3/6a17101aa929cf43c6ae0ab1/09d661b20a44929b4736a43eaa3df84180b25f30-2048x1295.png" alt="" /><p>충돌을 해결한 후 <strong>Data view</strong> 페이지로 돌아가서 <code>logs-*</code>을(를) 선택합니다. 충돌이 <code>log.offset</code>에만 관련된 경우 더 이상 충돌 목록이 표시되지 않습니다. 다른 충돌이 있었던 경우 원래 백킹 인덱스는 충돌 목록에서 사라지고 대신 새 백킹 인덱스가 <code>long</code> 섹션에 표시됩니다.</p><p><strong>Discover</strong> <code>log.offset</code> 필드에 적절한 아이콘이 표시되는지 확인할 수도 있습니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt127cb539b70acada/6a17101ba929cfbc66ae0ab5/1c3bb7029c99aa4bc6b0931f39f5648654b35ccd-2048x1204.png" alt="" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltaa1eb678773c23d9/6a17101d4a531b00a636aa3b/0af1b1aa3a031c207aa5eb083696dd081d941e67-2048x1001.png" alt="" /><p>매핑 충돌이 있는 모든 백킹 인덱스에 대해 위의 단계를 반복하여 모든 충돌이 성공적으로 해결될 때까지 진행합니다.</p><p>참고 자료:</p><ul><li><p><a href="https://www.elastic.co/docs/reference/ecs/ecs-field-reference">ECS 필드 참조</a></p></li><li><p><a href="https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-reindex">문서 재색인</a></p></li></ul><h2>결론</h2><p>이 블로그의 단계를 따르면 매핑 충돌을 해결하고 모든 새 데이터가 올바르게 매핑되는지 확인할 수 있습니다. 이는 필요한 구성 요소 템플릿을 데이터 소스에 연결함으로써 달성할 수 있습니다. 이 워크플로우는 즉각적인 문제를 해결할 뿐만 아니라 데이터와 요구 사항이 진화함에 따라 스키마 변경을 관리할 수 있는 안전하고 반복 가능한 프로세스를 구축합니다.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-mapping-conflicts-reindex-data-streams</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-mapping-conflicts-reindex-data-streams</guid>
    <category><![CDATA[운영]]></category>
    <dc:creator><![CDATA[Lisa Larribas]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9654eb32edb4a44a/6a17101fcdacbf0ac17d2ad8/2f2573aa3d29b3a628e4fce606c803add2641501-720x420.jpg" length="0" type="image/jpeg"/>
    <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>