블로그

두 개의 필드로 Elasticsearch 검색

멀티매치 쿼리, 부울 쿼리, 쿼리 시간 필드 부스팅 등 두 개의 필드로 검색하는 기술을 알아보세요.

New to Elasticsearch? Join our getting started with Elasticsearch webinar. You can also start a free cloud trial or try Elastic on your machine now.

Elasticsearch에서 여러 필드에 걸쳐 검색하는 것은 많은 애플리케이션에서 공통적으로 요구되는 사항입니다. 이 문서에서는 다중 일치 쿼리, 부울 쿼리, 쿼리 시간 필드 부스팅 등 두 가지 필드별로 검색을 수행하는 고급 기술을 살펴봅니다. 이러한 기술은 사용자에게 보다 정확하고 관련성 높은 검색 결과를 제공하는 데 도움이 됩니다.

두 개의 필드로 검색을 수행하는 고급 기술

1. 멀티매치 쿼리

다중 일치 쿼리를 사용하면 여러 필드에서 단일 쿼리 문자열을 검색할 수 있습니다. 이 기능은 두 필드 중 하나에 지정된 쿼리 문자열이 포함된 문서를 찾으려는 경우에 유용합니다. 다음은 '제목' 또는 '설명' 필드에서 'example'라는 용어를 검색하는 다중 검색 쿼리의 예입니다:

{
  "query": {
    "multi_match": {
      "query": "example",
      "fields": ["title", "description"]
    }
  }
}

2. 부울 쿼리

부울 쿼리를 사용하면 부울 논리를 사용하여 여러 쿼리를 결합할 수 있습니다. "should" 절을 사용하여 두 필드 중 하나에서 쿼리와 일치하는 문서를 검색할 수 있습니다. 다음은 'title' 및 'description' 필드에서 'example'라는 용어를 검색하는 부울 쿼리의 예입니다:

{
  "query": {
    "bool": {
      "should": [
        {"match": {"title": "example"}},
        {"match": {"description": "example"}}
      ]
    }
  }
}

3. 쿼리 시간 필드 부스팅

때로는 검색 중에 한 필드를 다른 필드보다 더 중요하게 생각하고 싶을 수도 있습니다. 쿼리 시점에 필드에 부스트 인자를 적용하여 이를 달성할 수 있습니다. 부스트 값이 높을수록 해당 필드에 더 많은 가중치가 부여되므로 최종 검색 점수에 영향을 미칠 가능성이 높아집니다. 다음은 'title' 필드에 부스트 팩터가 적용된 멀티매치 쿼리의 예입니다:

{
  "query": {
    "multi_match": {
      "query": "example",
      "fields": ["title^3", "description"]
    }
  }
}

이 예에서 '제목' 필드의 부스트 계수는 3으로, 검색 점수를 결정하는 데 있어 '설명' 필드보다 3배 더 중요합니다.

4. 다양한 부스트 인자를 가진 쿼리 결합

부울 쿼리를 사용하여 서로 다른 부스트 인자를 가진 여러 쿼리를 결합할 수도 있습니다. 이를 통해 검색 결과에서 각 필드의 중요도를 미세 조정할 수 있습니다. 다음은 'title' 및 'description' 필드에 서로 다른 부스트 인자를 적용한 부울 쿼리의 예입니다:

{
  "query": {
    "bool": {
      "should": [
        {"match": {"title": {"query": "example", "boost": 3}}},
        {"match": {"description": {"query": "example", "boost": 1}}}
      ]
    }
  }
}

이 예에서 '제목' 필드의 부스트 계수는 3이고 '설명' 필드의 부스트 계수는 1입니다.

결론

다중 일치 쿼리, 부울 쿼리, 쿼리 시간 필드 부스팅과 같은 고급 기술을 사용하여 Elasticsearch에서 두 필드를 기준으로 검색할 수 있습니다. 이러한 기술을 결합하면 사용자에게 더 정확하고 관련성 높은 검색 결과를 제공할 수 있습니다. 다양한 쿼리 조합과 부스트 인자를 실험하여 특정 사용 사례에 맞는 최적의 검색 구성을 찾아보세요.

자주 묻는 질문

여러 필드에 걸쳐 하나의 용어를 검색하려면 어떻게 해야 하나요?

multi_match 쿼리를 사용합니다. 이 기능을 사용하면 하나의 검색 스트링과 확인할 필드 목록(예: 제목 및 설명)을 동시에 제공할 수 있습니다.

multi_match와 부울 쿼리의 차이점은 무엇인가요?

multi_match는 하나의 검색어를 여러 필드에서 찾을 때 사용하는 간편한 방식이지만, should 절을 사용하는 부울 쿼리는 다양한 유형의 쿼리를 함께 묶어 보다 세밀하게 제어합니다.

특정 필드를 다른 필드보다 더 중요하게 설정할 수 있나요?

네, 쿼리 시간 부스팅을 사용합니다. 필드 이름에 캐럿과 숫자(예: title^3)를 추가하면 해당 필드에서 일치하는 항목이 최종 점수에 더 중요하다는 것을 Elasticsearch에 알릴 수 있습니다.

bool 쿼리 내에서 서로 다른 부스트를 적용할 수 있나요?

예. 부울 쿼리 내에서 "boost": X 매개변수를 각 개별 일치 절에 지정하여 각 필드가 결과 순서에 기여하는 정도를 정확하게 미세 조정할 수 있습니다.

관련 콘텐츠

Azure AKS 자동에 Elasticsearch를 배포하는 방법

Eduard Martin

Elasticsearch에서 구조화된 문서에 대한 재귀 청크 구성하기

Daniel Rubinstein

Kibana의 Elasticsearch 쿼리 규칙 UI 소개

Jhon Guzmán

AWS Marketplace에 Elasticsearch를 배포하는 방법

Eduard Martin

Elasticsearch 샤드와 복제본: 실용적인 가이드

Piotr Przybyl