본문 바로가기
BE 공부/검색엔진

[ElasticSearch] 인덱싱과 세그먼트

by 꼬질꼬질두부 2024. 8. 29.
반응형
문서 인덱싱과 세그먼트 생성

[문서 1 인덱싱]

  • 역 인덱스에 "정말", "멋진", "날씨", "입니다"라는 단어가 추가
  • "정말"이라는 단어는 문서 1의 위치(예: 1번째 단어)로 저장
  • 문서 1의 역 인덱스를 포함하는 세그먼트가 생성

[문서 2 인덱싱]

  • 역 인덱스에 "오늘", "날씨", "정말", "좋습니다"라는 단어가 추가
  • "정말"이라는 단어는 문서 2의 위치(예: 3번째 단어)로 저장
  • 문서 2의 역 인덱스를 포함하는 또 다른 세그먼트가 생성

[문서 3 인덱싱]

  • 역 인덱스에 "정말", "날씨", "좋다"라는 단어가 추가
  • "정말"이라는 단어는 문서 3의 위치(예: 1번째 단어)로 저장
  • 문서 3의 역 인덱스를 포함하는 또 다른 세그먼트가 생성
세그먼트 내의 데이터 구조

세그먼트 A:

  • 단어 목록: "정말", "멋진", "날씨", "입니다"
  • 역 인덱스:
    • "정말" -> 문서 1 (위치: 1번째 단어)
    • "멋진" -> 문서 1 (위치: 2번째 단어)
    • "날씨" -> 문서 1 (위치: 3번째 단어)
    • "입니다" -> 문서 1 (위치: 4번째 단어)

세그먼트 B:

  • 단어 목록: "오늘", "날씨", "정말", "좋습니다"
  • 역 인덱스:
    • "오늘" -> 문서 2 (위치: 1번째 단어)
    • "날씨" -> 문서 2 (위치: 2번째 단어)
    • "정말" -> 문서 2 (위치: 3번째 단어)
    • "좋습니다" -> 문서 2 (위치: 4번째 단어)

세그먼트 C:

  • 단어 목록: "정말", "날씨", "좋다"
  • 역 인덱스:
    • "정말" -> 문서 3 (위치: 1번째 단어)
    • "날씨" -> 문서 3 (위치: 2번째 단어)
    • "좋다" -> 문서 3 (위치: 3번째 단어)
검색 요청 시 세그먼트의 역할

  • 사용자가 "정말"이라는 단어를 검색
  • 세그먼트 A, B, C 검색
  • 역 인덱스 조회:
    • 세그먼트 A: "정말" -> 문서 1
    • 세그먼트 B: "정말" -> 문서 2
    • 세그먼트 C: "정말" -> 문서 3
  • 결과 반환
세그먼트 병합(Merge) 과정

  • 세그먼트 A, B, C를 병합하여 세그먼트 D를 생성
  • 세그먼트 D 생성:
    • 세그먼트 A, B, C의 데이터를 통합하여 새로운 세그먼트 D 생성. 이 과정에서 중복된 단어("정말", "날씨" 등)는 한 번만 저장되며, 문서 ID와 위치 정보 추가
    • 예: "정말" -> 문서 1 (위치: 1번째 단어), 문서 2 (위치: 3번째 단어), 문서 3 (위치: 1번째 단어)
  • 세그먼트 A, B, C를 삭제하여 디스크 공간을 회수
반응형

댓글