✅ 역인덱스(Inverted Index)를 활용한 데이터 조회

  1. 기존 products 인덱스 삭제

    # 기존 products 인덱스 삭제
    DELETE /products
    
  2. 인덱스 생성

    [기존에 배웠던 방법]

    # 인덱스 생성
    PUT /products
    
    # 매핑 정의
    PUT /products/_mappings
    {
      "properties": {
        "name": { 
          "type": "text"
        }
      }
    }
    

    [조금 더 편리한 방법]

    # 인덱스 생성 + 매핑 정의 (자주 쓰이니 정리해두자!)
    PUT /products
    {
      "mappings": {
        "properties": {
          "name": {
            "type": "text"
          }
        }    
      }
    }
    
  3. 인덱스 잘 생성됐는 지 확인

    # 인덱스 잘 생성됐는 지 확인
    GET /products
    
  4. 도큐먼트 삽입

    # 데이터 넣기
    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"
    }
    
  5. 도큐먼트 조회

    # 'Apple 2024 아이패드'로 검색
    GET /products/_search
    {
      "query": {
        "match": {
          "name": "Apple 2024 아이패드"
        }
      }
    }
    

응답값

{
  "took": 7,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 3,
      "relation": "eq"
    },
    "max_score": 1.5471337,
    "hits": [
      {
        "_index": "products",
        **"_id": "3",
        "_score": 1.5471337,
        "_source": {
          "name": "Apple 2024 아이패드 mini A17 Pro"
        }**
      },
      {
        "_index": "products",
        **"_id": "2",
        "_score": 0.6860854,
        "_source": {
          "name": "Apple 2024 에어팟 4세대"
        }**
      },
      {
        "_index": "products",
        **"_id": "1",
        "_score": 0.12180668,
        "_source": {
          "name": "Apple 2025 맥북 에어 13 M4 10코어"
        }**
      }
    ]
  }
}

score가 높은 순으로 도큐먼트가 조회됐다. score가 대략적으로 어떻게 계산됐는 지 이전 강의의 내용을 다시 떠올려보자.

[복습]

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)으로 도큐먼트를 조회한다.

<aside> 👨🏻‍🏫

다음 강의에서는 역인덱스를 생성하는 과정을 조금 더 깊이 파헤쳐보자.

</aside>