Firebase의 Firestore에서 Algolia이용해서 검색 적용하기
오늘은 Firebase의 검색서비스인,
algolia를 이용해서 검색을 하는 방법에 대해서 정리해 보도록 하겠습니다.
0. 왜 Alogolia가 필요한가
Firebase는 여러가지 장점이 있지만,
그 데이터베이스 서비스인 Firestore에서는
검색을 위한 인덱싱을 지원하지 않습니다.
떡하니 유료서비스인 Algolia를 사용하라고 나와있는데요.
(물론 community등급인 무료 등급에서도 충분히 사용할 수 있지만 말이지요.)
1. Algolia 설치
가장 먼저해야 할 것은 역시 npm모듈 설치 입니다.
npm install algoliasearch--save
2. Algolia Index 생성
Algolia가입은 구글아이디로 로그인해서 가입이 되기 때문에 정말 쉽네요.
가입 부분은 패스하도록 하겠습니다.
가입후, algolia에 로그인을 해 주고,
좌측 메뉴화면에서 indices를 선택해 줍니다.
그럼, 아래와 같은 화면을 볼 수 있는데요.
당연히 create index를 선택해 줍니다.
유료 서비스라 그런지 뭔가 굉장히 쉽게 진행 되네요.
Create을 해주면 위와 같은 보드가 생성됩니다.
3. Create이나 Update할 경우 Algolia로 카피
이 작업은 firebase의 functions에서 진행합니다.
따라서 functions모듈을 require해 주어야 합니다.
아래와 같이 require해 줍니다.
const functions = require('firebase-functions');
그다음은 require한 functions를 이용해서 algloia를 initialize해 주어야 하는데요.
algolia를 initialize하기 위해서는, id와 api key를 algolia에서 가져와야 합니다.
algolia사이트의 application id와 admin api key 그리고 필요한 경우, Search_only Api Key(Pulic Key)를 api keys메뉴에서 복사해 오도록 하겠습니다.
이제 복사한 키를 firebase에게 알려주어야 하는데요.
공식문서를 보면, functions 의 config variable에 appid와 api 키가 저장되어 있다고 나옵니다.
functions의 config variable은 어디에 있는 걸까요?
이것은 공식문서의 write functions>environment configuration에 가보면 나와 있는데요.
Firebase의 cli에서 아래와 같은 명령어를 이용해서 key value값을 저장 가능하다고 합니다.
firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
내 그럼 이것을 algolia의 그것으로 대체 하면 되겠네요.
firebase functions:config:set algolia.app_id="Application_ID" algolia.api_key="API Key"
위와 같이 CLI에서 입력해주면 아래와 같이 updated되었다고 잘 나옵니다.
config값을 제대로 받아오기 위해서는 functions를 deploy해야 합니다.
아래 명령어로 functions를 디플로이 해 줍니다.
firebase deploy --only functions
잘 set이 되었다면 이제 이 값에 접근해서, algolia를 initialize해 주어야 합니다.
그럼 이제 Algolia를 initialize해 보도록 하겠습니다.