Kibana의 Elasticsearch 쿼리 규칙 UI 소개

Elasticsearch 쿼리 규칙 UI를 사용해 자연 순위에 영향을 주지 않고 Kibana에서 사용자 정의 가능한 규칙 세트를 사용해 검색 쿼리에서 문서를 추가하거나 제외하는 방법을 알아보세요.

Elasticsearch가 처음이신가요? Elasticsearch 입문용 웨비나에 참여하세요. 지금 무료 클라우드 체험을 시작하거나, 내 기기에서 Elastic을 사용해 볼 수 있습니다.

검색 엔진의 역할은 관련성 높은 결과를 반환하는 것입니다. 그러나 세일 강조, 시즌 상품 우선순위 지정, 스폰서 상품 소개 등 그 이상의 비즈니스 요구사항이 있으며, 개발자가 검색 쿼리에서 이를 항상 수행할 수는 없습니다.

또한 이러한 사용 사례는 일반적으로 시간에 민감하며 일반적인 개발 단계(코드 브랜치를 생성한 다음 새 릴리스를 기다리는 과정)를 거치는 것은 시간이 많이 소요되는 프로세스입니다.

그렇다면 이 모든 프로세스를 API 호출만으로, 더 나아가 Kibana에서 클릭 몇 번으로 수행할 수 있다면 어떨까요?

쿼리 규칙 UI

Elasticsearch 8.10에는 쿼리 규칙과 규칙 검색기가 도입되었습니다. 규칙에 따라 자연 검색 결과의 순위에 영향을 주지 않고 고정된 결과를 쿼리에 삽입하기 위해 고안된 도구입니다. 선언적이고 단순한 방식으로 결과 위에 비즈니스 로직을 추가할 뿐입니다.

쿼리 규칙의 몇 가지 일반적인 사용 사례는 다음과 같습니다:

  • 프로모션 목록 또는 판매 강조 표시: 세일 중이거나 스폰서된 품목을 상단에 표시합니다.
  • 문맥 또는 지리적 위치에 따라 제외: 현지 규정으로 인해 특정 항목을 표시할 수 없는 경우 숨기기.
  • 주요 결과의 우선순위 지정: 자연 검색 순위와 관계없이 인기 검색어 또는 고정 검색어가 항상 상단에 표시되도록 합니다.

인터페이스에 액세스하고 이러한 도구와 상호 작용하려면 Kibana 사이드 메뉴를 클릭하고 관련성아래의 쿼리 규칙으로 이동해야 합니다:

쿼리 규칙 메뉴가 나타나면 첫 번째 규칙 집합 만들기를 클릭합니다:

다음으로 규칙 집합의 이름을 지정해야 합니다.

각 규칙을 정의하는 양식에는 세 가지 주요 구성 요소가 있습니다:

  • 기준: 조건: 규칙을 적용하기 위해 충족해야 하는 조건입니다. 예를 들어, "쿼리 문자열 필드에 크리스마스값이 포함된 경우" 또는 "국가 필드가 CO인경우"와 같은 예입니다.
  • 액션: 조건이 충족될 때 수행하려는 작업입니다. 고정(문서를 최상위 결과에 고정)하거나 제외(문서를 숨김)할 수 있습니다.
  • 메타데이터: 쿼리가 실행될 때 쿼리와 함께 제공되는 필드입니다. 여기에는 위치나 언어와 같은 사용자 정보뿐만 아니라 검색 데이터(쿼리 문자열)도 포함될 수 있습니다. 규칙 적용 여부를 결정하기 위해 기준에서 사용하는 값입니다.

다양한 품목이 있는 이커머스 사이트가 있다고 가정해 보겠습니다. 지표를 살펴보면 콘솔 카테고리에서 가장 많이 판매된 상품 중 하나는 '듀얼쇼크 4 무선 컨트롤러'로, 특히 사용자가 'PS4' 또는 'PlayStation 4' 키워드를 검색할 때 가장 많이 판매되는 상품임을 확인할 수 있습니다. 따라서 사용자가 해당 키워드를 검색할 때마다 이 제품을 결과 상단에 표시하기로 결정했습니다.

먼저 대량 API 요청을 사용하여 각 항목에 대한 문서를 색인해 보겠습니다:

쿼리에 개입하지 않으면 해당 항목은 일반적으로 네 번째 위치에 표시됩니다. 쿼리는 다음과 같습니다:

결과는 다음과 같습니다.

이를 변경하는 쿼리 규칙을 만들어 보겠습니다. 먼저 다음과 같이 규칙 집합에 추가해 보겠습니다:

또는 이에 상응하는 API 요청:

쿼리에서 규칙 집합을 사용하려면 쿼리 규칙 유형을 사용해야 합니다. 이러한 종류의 쿼리는 크게 두 부분으로 구성됩니다:

  • match_criteria: 사용자의 쿼리와 비교하는 데 사용되는 메타데이터입니다. 이 예에서는 쿼리 문자열 필드에 "PlayStation 4" 값이 있을 때 규칙 집합이 활성화됩니다.
  • 쿼리: 검색 및 자연 검색 결과를 얻는 데 사용되는 실제 쿼리입니다.

이렇게 하면 먼저 오가닉 쿼리를 실행한 다음 Elasticsearch가 규칙 세트의 규칙을 적용합니다:

예: 사용자 기반 메타데이터

쿼리 규칙의 또 다른 흥미로운 적용 사례는 메타데이터를 사용하여 사용자 또는 웹페이지의 문맥 정보를 기반으로 특정 문서를 표시하는 것입니다.

예를 들어, 사용자의 충성도 수준에 따라 숫자 값으로 표시되는 아이템이나 맞춤형 판매를 강조하고 싶다고 가정해 보겠습니다.

이 메타데이터를 쿼리에 직접 수집하여 해당 값이 특정 기준을 충족할 때 규칙이 활성화되도록 할 수 있습니다.

먼저, 충성도 수준이 높은 사용자만 볼 수 있는 문서를 색인화합니다:

이제 동일한 규칙 집합 내에 새 규칙을 만들어 loyalty_level이 80 이상일 때 해당 항목이 결과 상단에 표시되도록 해 보겠습니다.

규칙과 규칙 집합을 저장합니다.

다음은 이에 상응하는 REST 요청입니다:

이제 쿼리를 실행할 때 메타데이터에 새 매개변수 loyalty_level을 포함시켜야 합니다. 규칙의 조건이 충족되면 새 문서가 결과 위에 표시됩니다.

예를 들어 충성도_레벨이 80인 쿼리를 전송하는 경우입니다:

결과 위에 로열티 문서가 표시됩니다:

아래의 경우 충성도 레벨이 70이므로 규칙이 충족되지 않으므로 해당 아이템이 상단에 표시되지 않아야 합니다:

결과는 다음과 같습니다:

예: 즉시 제외

듀얼쇼크 4 무선 컨트롤러(ID 2) 를 일시적으로 사용할 수 없어 판매할 수 없다고 가정해 보겠습니다. 따라서 비즈니스 팀은 문서를 수동으로 삭제하거나 일부 데이터 프로세스가 시작될 때까지 기다리는 대신 그 동안 검색 결과에서 해당 문서를 제거하기로 결정합니다.

방금 인기 있는 항목에 적용한 것과 비슷한 프로세스를 사용하되 이번에는 고정됨을 선택하는 대신 제외를 선택합니다. 이 규칙은 일종의 블랙리스트 역할을 합니다. 쿼리가 실행될 때마다 제외가 작동하도록 기준을 항상으로 변경합니다.

규칙은 다음과 같이 표시되어야 합니다:

규칙과 규칙 집합을 저장하여 변경 사항을 적용합니다. 다음은 이에 상응하는 REST 요청입니다:

이제 쿼리를 다시 실행하면 이전 규칙이 항목을 고정하는 것이었음에도 불구하고 해당 항목이 더 이상 결과에 없는 것을 볼 수 있습니다. 이는 제외가 고정 결과보다 우선하기 때문입니다.

결론

쿼리 규칙을 사용하면 코드를 변경하지 않고도 관련성을 매우 쉽게 조정할 수 있습니다. 새로운 Kibana UI를 사용하면 몇 초 만에 이러한 변경을 수행할 수 있으므로, 여러분과 여러분의 비즈니스 팀이 검색 결과를 더 잘 제어할 수 있습니다.

쿼리 규칙은 전자상거래 외에도 지원 포털에서 문제 해결 가이드를 강조 표시하고, 지식창고에 주요 내부 문서를 표시하고, 뉴스 사이트에서 속보를 홍보하고, 만료된 작업 또는 콘텐츠 목록을 필터링하는 등 다양한 시나리오에 활용할 수 있습니다. 사용자 역할이나 지역에 따라 제한된 자료를 숨기는 등의 규정 준수 규칙을 적용할 수도 있습니다.

관련 콘텐츠

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요