[MongoDB] atlas search
atlas์์๋ Elasticsearch์ ์ ์ฌํ ๊ตฌ์กฐ์ ๊ฒฝํ์ ๊ฐ์ง๋ search ์ ์ฉ ์์คํ ์ ์ ๊ณตํ๋ค.
Elasticsearch์ฒ๋ผ Lucene์ ๊ธฐ๋ฐ์ผ๋ก ํํ์ ๋ถ์์ ์ฒ๋ฆฌํ๋ฉฐ, ๋์์ด(synonym), score ๊ธฐ๋ฐ์ ๊ฒ์ ๊ธฐ๋ฅ ๋ฑ์ ์ ๊ณตํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฒ์ฉ DB์์ ๊ฐ๋นํ๊ธฐ ํ๋ ๋ณต์กํ ํํฐ๋ ์ ๋ ฌ์ ๋ํด์๋ ์ค์ํ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ค.
mongoDB ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๋ก ์์ฑํด์ ์ฌ์ฉํ ์ ์๋ค๋๊ฒ ํฐ ์ฅ์ ์ด๋ค. ๊ท์ฐฎ๊ฒ ๋ก๊ทธ์คํ์ ๋์์ ๋๊ธฐํ ์ํค๊ณ ๊ทธ๋ฌ์ง ์์๋ ๋๋ค.
๊ตฌ์กฐ
Atlas search๋ ์ด๋ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.

๋ท๋จ์ mongot๋ฅผ ๋น๋กฏํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์คํ
์ ์ถ๊ฐํ๊ณ , ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค search ์ธ๋ฑ์ค์ ๋๊ธฐํ๋ฅผ ์์ผ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ ๋ search ์ธ๋ฑ์ค๋ฅผ ํตํด ๊ฐ์ ๊ฒ์ํด์ ์ฌ์ฉํ๋ค.
๋ฑํ ํน์ดํ ๊ฑด ์๋ ๊ฒ ๊ฐ๋ค.
search index ์์ฑ
๋จผ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
ํด๋ฌ์คํฐ ๋ฉ์ธํ์ด์ง์ ๋จ๋ ์ ๊ฑธ ๋๋ฅด๊ฑฐ๋
ํด๋ฌ์คํฐ search ํญ์ ์ ๋ฒํผ์ ๋๋ฅธ๋ค.
๋น์ฃผ์ผ ์๋ํฐ
์ฌ๊ธฐ์ ์ธ๋ฑ์ฑํ ํ
์ด๋ธ์ ์ ํํ๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ฐ ํํ๋ก ๊ตฌ์ฑ์ด ๋จ๋๋ฐ
refine...์ ๋๋ฅด๋ฉด ์ปค์คํ
์ ํด์ค ์ ์๋ค. ์ผ๋จ ๊ธฐ๋ณธ์ค์ ์ผ๋ก ๊ฐ๋ณด๊ฒ ๋ค.
์์ฑํ๋ฉด ์ด๋ ๊ฒ ์ธ๋ฑ์ค๊ฐ ์ถ๊ฐ๋ ๊ฒ์ด๊ณ
์ข ๊ธฐ๋ค๋ฆฌ๋ฉด ํ์ฑํ๊ฐ ๋ ๊ฒ์ด๋ค.
๊ฒ์ํด๋ณด๊ธฐ
๊ธฐ์กด์ text ์ธ๋ฑ์ค๋ง์ ์ธ๋๋ ์ง์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค๊ณ , $text ๋ฑ์ ํํฐ ์ ์ ํตํด ํํฐ๋ง์ ์ํํ๋ค.
https://blog.naver.com/sssang97/222987710006
ํ์ง๋ง atlas search์์๋ $search๋ผ๋ ์ ์ฉ ํ๋๋ฅผ ํตํด ํํฐ๋ง์ ์ํํ๋ค.
๋ง๋ค์ด์ง search index ํญ์์ ๋ฐ๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค๋ณผ ์ ์๋๋ฐ
์ ์ฟผ๋ฆฌ๋ name ํ๋๊ฐ "๋ถ๋ญ๋ณถ์๋ฉด"์ธ ํ๋๋ง ๊ฒ์ํด์ ๋ฐํํ๋ ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด mongoDB api๋ฅผ ํตํด์๋ ์ฌ์ฉํ ์๊ฐ ์๋ค. aggregate ํจ์์ ๋ํด์ ์ ์ฉํ ์๊ฐ ์๋๋ฐ
์ด๋ ๊ฒ $search๋ผ๊ณ atlas search๋ง์ ์ํด ์์ฝ๋ ํ๋๊ฐ ์๋ค.
์๋ง altas ๋ฐ์์๋ ์ ํจํ์ง ์์ ๊ฒ์ด๋ค.
๊ฒ์์ ๋ํ ๋ ์์ธํ ๋ด์ฉ์ ๋ณ๋ ํฌ์คํธ๋ก ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
์ธ๋ฑ์ค ๋งคํ
๋ณ๋ค๋ฅธ ์ค์ ์ ์ฃผ์ง ์๊ณ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค๋ฉด ์ด๋ฐ์์ผ๋ก ๊ตฌ์ฑ์ด ๋ ๊ฒ์ด๋ค.
์ด๋ฌ๋ฉด ์์์ ๋ชจ๋ ํ๋์ ๋ํด์ ์ธ๋ฑ์ฑ์ ํด์ฃผ๋๋ฐ, ์ฑ๋ฅ์ ์ผ๋ก๋ ๋นํจ์จ์ ์ธ ๋ถ๋ถ์ด ํฌ๋ค.
๋์คํฌ๋ ํจ์ฌ ๋ง์ด ๋จน๊ณ , ์ธ๋ฑ์ฑ ์ฑ๋ฅ๋ ๋จ์ด์ง๋ค๊ณ ํ๋ค.
๊ทธ๋์ ์์ ์ ์ผ๋ก ์ฐ๋ ค๋ฉด ์ด๋ ๊ฒ, dynamic ๋งคํ์ ๋๊ณ ์ ์ ์ผ๋ก ๋งคํํด์ผ ํ๋ค.

์ฐธ์กฐ
https://www.mongodb.com/docs/atlas/atlas-search/
https://www.mongodb.com/docs/atlas/atlas-search/atlas-search-overview/
https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/
https://www.mongodb.com/docs/atlas/atlas-search/define-field-mappings/