✅ 역인덱스(Inverted Index)란?

**역인덱스(Inverted Index)**는 필드 값을 단어마다 쪼개서 찾기 쉽게 정리해놓은 목록이다. 글로 이해하려면 어렵다. 예시를 바로 살펴보자.

POST /products/_create/1
{
  "name": "Apple 2025 맥북 에어 13 M4 10코어"
}

POST /products/_create/2
{
  "name": "Apple 2024 에어팟 4세대"
}

POST /products/_create/3
{
  "name": "Apple 2024 아이패드 mini A17 Pro"
}

위와 같은 3개의 도큐먼트를 Elasticsearch에 저장한다고 가정하자. 그러면 Elasticsearch는 내부적으로 아래와 같이 데이터를 저장해둔다.

  1. 단어 단위로 자르기

    "name": "Apple 2025 맥북 에어 13 M4 10코어"

    → [Apple, 2025, 맥북, 에어, 13, M4, 10코어]

    "name": "Apple 2024 에어팟 4세대"

    → [Apple, 2024, 에어팟, 4세대]

    "name": "Apple 2024 아이패드 mini A17 Pro"

    → [Apple, 2024, 아이패드, mini, A17, Pro]

  2. 역인덱스로 저장

    productsname 필드에 대한 역인덱스

    토큰(token) 도큐먼트 id
    Apple [1, 2, 3]
    2025 [1]
    맥북 [1]
    에어 [1]
    13 [1]
    M4 [1]
    10코어 [1]
    2024 [2, 3]
    에어팟 [2]
    4세대 [2]
    아이패드 [3]
    mini [3]
    A17 [3]
    Pro [3]
  3. 검색을 할 경우 역인덱스를 활용

    Apple 2024 아이패드라고 검색하면 역인덱스를 활용해 일치하는 단어가 많은 도큐먼트를 우선적으로 조회한다.

    토큰(token) 도큐먼트 id
    Apple [1, 2, 3]
    2025 [1]
    맥북 [1]
    에어 [1]
    13 [1]
    M4 [1]
    10코어 [1]
    2024 [2, 3]
    에어팟 [2]
    4세대 [2]
    아이패드 [3]
    mini [3]
    A17 [3]
    Pro [3]

    이와 같은 Elasticsearch의 자체적인 로직으로 **score(점수)**를 매겨 score가 높은 순(id=3id=2id=1)으로 도큐먼트를 조회한다. 일반적으로 검색어와 관련성이 높으면 높을수록 **score(점수)**가 높게 측정된다.

Elasticsearch가 역인덱스(Inverted Index)의 기능을 가지고 있기 때문에, 단어의 순서랑 상관없이 도큐먼트를 조회해올 수 있는 것이다.

참고) 이런 작동 구조는 데이터 타입의 text 타입에 한해서만 적용된다.

<aside> 👨🏻‍🏫

다음 강의에서는 방금 설명한 역인덱스를 활용해 데이터를 직접 조회해보자.

</aside>