ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ElasticSearch - Term, Match 차이점
    ElasticSearch/문법 2024. 11. 14. 11:01
    반응형

    term 쿼리와 match 쿼리는 Elasticsearch에서 검색 시 자주 사용하는 두 가지 주요 쿼리 유형으로, 텍스트를 처리하고 검색하는 방식에 큰 차이가 있습니다. 아래는 각 쿼리의 상세 설명과 예시입니다.

    1. term 쿼리

    • 설명: term 쿼리는 입력된 값과 정확하게 일치하는 데이터를 찾기 위한 쿼리입니다. 이 쿼리는 텍스트 분석을 수행하지 않으며, 데이터가 있는 그대로 저장된 값과 일치하는지를 검사합니다.
    • 대소문자 구분: term 쿼리는 데이터의 대소문자를 구분하며, 값이 정확히 일치해야 결과에 포함됩니다.
    • 사용 사례: term 쿼리는 정확한 키워드 매칭이 필요한 경우, 예를 들어 id와 같은 고유한 식별자, 상태(status), 태그와 같은 분석되지 않은 필드에 적합합니다.

     

    예제 데이터베이스 가정

    {
      "title": "New product launch",
      "content": "The new product has been launched successfully.",
      "author": "Admin"
    },
    {
      "title": "New updates in our policy",
      "content": "Please read the new policy updates carefully.",
      "author": "admin"
    },
    {
      "title": "Introducing new features",
      "content": "We are excited to announce new features.",
      "author": "JohnDoe"
    }

     

    예제: term 쿼리

    GET /posts/_search
    {
      "query": {
        "term": {
          "author": "admin"
        }
      }
    }

     

    결과 분석

    • term 쿼리는 author 필드가 admin과 정확히 일치하는 문서만 반환합니다.
    • 결과:
    {
      "hits": [
        {
          "_source": {
            "title": "New updates in our policy",
            "content": "Please read the new policy updates carefully.",
            "author": "admin"
          }
        }
      ]
    }
     
    • 이유: term 쿼리는 대소문자를 구분하기 때문에, author 필드가 **소문자 admin**과 정확히 일치하는 문서만 반환됩니다. "Admin"으로 저장된 경우에는 반환되지 않습니다.

     

    2. match 쿼리

    • 설명: match 쿼리는 텍스트 필드의 값을 분석하여 부분 일치 검색을 수행합니다. Elasticsearch는 match 쿼리의 입력을 소문자로 변환하고 텍스트 분석을 거친 후 검색을 진행합니다.
    • 대소문자 구분하지 않음: match 쿼리는 소문자로 변환된 토큰을 검색하기 때문에 대소문자를 구분하지 않습니다.
    • 사용 사례: match 쿼리는 자연어 검색이나 대소문자 구분이 필요 없는 필드에서 검색할 때 유용합니다. 예를 들어, 제목이나 설명과 같이 분석된 텍스트 데이터에 적합합니다.

    예제: match 쿼리

    GET /posts/_search
    {
      "query": {
        "match": {
          "title": "NEW"
        }
      }
    }

     

    결과 분석

    • match 쿼리는 텍스트를 분석하여 검색하므로, 대소문자를 구분하지 않고 "new"라는 단어를 포함하는 title 필드를 모두 반환합니다.
    • 결과:
    {
      "hits": [
        {
          "_source": {
            "title": "New product launch",
            "content": "The new product has been launched successfully.",
            "author": "Admin"
          }
        },
        {
          "_source": {
            "title": "New updates in our policy",
            "content": "Please read the new policy updates carefully.",
            "author": "admin"
          }
        },
        {
          "_source": {
            "title": "Introducing new features",
            "content": "We are excited to announce new features.",
            "author": "JohnDoe"
          }
        }
      ]
    }

     

     
    • 이유: match 쿼리는 입력 값 "NEW"를 소문자 "new"로 변환하여 검색합니다. 따라서 title 필드에 "new" 단어가 포함된 모든 문서가 반환됩니다.

    term 쿼리와 match 쿼리의 비교 요약

    특징term 쿼리match 쿼리

    텍스트 분석 여부 분석하지 않음 분석하여 소문자 변환 등 수행
    대소문자 구분 구분함 구분하지 않음
    용도 키워드 매칭, 상태값 등 자연어 검색, 부분 일치 검색
    예시 결과 정확히 "admin"과 일치하는 데이터만 반환 "New", "new"와 같은 키워드가 포함된 모든 데이터 반환

    결론

    • term 쿼리는 대소문자와 텍스트를 정확하게 매칭해야 하는 경우에 적합하며, match 쿼리는 텍스트 분석을 통해 의미 있는 검색을 하고자 할 때 적합합니다.
    • 예제의 author 필드에서 "admin"과 "Admin"이 다르게 처리된 것이 term 쿼리의 특징이고, title에서 "new"를 포함한 모든 문서를 검색할 수 있는 것이 match 쿼리의 특징입니다.

     

    반응형

    댓글

Designed by Tistory.