
App Search는 검색이 필요한 어떠한 웹 사이트 혹은 애플리케이션에 쉽게 검색 기능을 도입할 수 있는 검색 애플리케이션이다.

Elastic의 3가지 솔루션인 Enterprise Search, Observabillity, Security 중 Enterprise Search에서 제공하는 애플리케이션이다.
App Search는 아래와 같은 특징과 기능이 있다.

App Search는 Elastic의 기본 구성인 Elasticsearch + Kibana 에 결합되어 REST API 기반으로 작동한다. App Searh는 API를 처리해주는 Engine을 생성하여 사용한다. Engine을 통해 데이터(인덱스)를 관리하고, 연관성 튜닝을 하고, 실시간 분석 등의 모든 작업을 처리한다.
Elastic 을 사용하는 데에 가장 많은 질문들 중 하나가 라이센스에 관한 것이다. App Search의 기본적인 기능들은 basic(무료) 라이센스로도 가능하다. 다만 다음과 같은 기능들은 Platinum(유료) 이상의 라이센스가 필요하다.
위의 기능 외에 전반적인 검색 기능들은 모두 무료 라이센스로 사용 가능하다.
App Search를 사용하기 위한 요구사항은 다음과 같다.
App Search는 Elasticsearch 클러스터와 클러스터링 된 Enterprise Search 노드에서 실행된다. Enterprise Search 노드 클러스터링에 대한 방법은 추가로 글로 작성하겠다.

Enterprise Search 노드가 클러스터링된다면 키바나에서 Search 메뉴를 클릭 시 사진과 같이 Enterprise Search 메뉴가 추가 된다. App Search 를 클릭하면

위와 같이 App Search 페이지 UI로 진입하게 된다. 이 페이지에서 Engine을 생성 및 관리 할 수 있고, 로깅 세팅, 인증 키 관리, 유저 및 권한 관리(RBAC)을 할 수 있다.

Create engine 버튼을 눌러 Engine 을 생성할 수 있다.

Engine은 App Search managed, Elasticsearch index-based 두 종류가 있다. 두 종류의 Engine 모두 데이터는 엘라스틱서치 인덱스에 저장되고, Engine은 해당 인덱스를 바라보는 alias를 사용하여 인덱스를 인식한다.
App Search managed Engine은 쉽게 도큐먼트를 추가할 수 있고 App Search가 매핑 및 세팅또한 잡아주는 편한 방식의 Engine이라고 할 수 있다. 엔진 생성 시 자동적으로 Elasticsearch에 .ent 로 시작하는 히든 인덱스가 생성된다.
Create Engine을 클릭한 뒤 App Search managed docs 를 누르고 Continue 를 클릭한다.

그러면 위와 같은 화면이 나오는데, Engine name 은 생성할 Engine의 이름을 정하는 것이고, Engine language 에서는 엔진에서 어떤 언어의 데이터를 사용할 것인지를 선택하게 된다.
한국어를 선택할 수 있으며, Elastic 에서는 영어가 아닌 언어들의 더 나은 최적화를 위해 Engine을 생성하기 전에 Elasticsearch에 ICU analysis plugin 을 설치해놓기를 권장하고 있다. ICU plugin을 설치해놓았다면 Engine 생성시에 사용되는 analyzer 들이 자동적으로 ICU로 설정된다.
App Search managed Engine의 장단점은 다음과 같다.
기존 Elasticsearch index에 더 익숙하고 App search managed Engine의 한계를 해결하기 위해 8.2.0 버전부터 Elasticsearch index-based Engine이 추가되었다.
사용자들은 기존에 생성해 놓은 Elasticsearch inedx를 사용해 Engine을 만들 수 있으며, 더 다양한 설정들이 가능해졌다.
1. Elasticsearch index setting and mapping 설정
다만 App Search 에서 Elasticsearch index 를 사용하기 위해서는 추가적인 index setting 및 mapping 설정이 필요하다. App Search가 제공하는 연관성 튜닝, 오타보정, 어간 분석, 검색어 자동 완성 등의 기능들을 사용하려면 text 필드들에 App Search가 인식할 수 있는 analyzer로 이루어진 서브필드들을 추가해야한다.
공식적인 setting 과 mapping 설정법은 링크 참조.