Blog
About Me
citeFredโs Blog
/
Tags
/
Elasticsearch
Blog
About Me
citeFredโs Blog
/
Tags
/
Elasticsearch
Share
Blog
About Me
๐ท๏ธ
Elasticsearch
# of Posts
8
1 more property
Gallery
Search
Elasticsearch๋ ๋ํ ๋ด๋ถ์ ์ผ๋ก ์ ์์ ์ ์ด๋ฉฐ, ์ด๋ค ์๊ณ ๋ฆฌ์ฆ, ์๋ฃ๊ตฌ์กฐ ๋ฑ๋ฑ์ด๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ๊ฒ์ด ๋ณด์ฅ๋๋์ง์ ๋ํ ์ดํด๋ ์ถ๊ฐ ํ์
Elasticsearch๊ฐ ๋ด๋ถ์ ์ผ๋ก ์์ ์ ์ด๋ฉฐ ๋น ๋ฅธ ์ด์ ๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
1.
๋จผ์ , Elasticsearch๋ Apache Lucene์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค. Lucene์ ๊ฒ์ ์์ง์ ์ฌ์ฉ๋๋ ๊ฐ๋ ฅํ ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ํ ์คํธ ์ธ๋ฑ์ฑ๊ณผ ๊ฒ์์ ํนํ๋ผ ์์ต๋๋ค.
2.
Elasticsearch๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ ์ค ํ๋๋ ์ญ์์ธํ๋ผ๋ ๊ฐ๋ ์ ๋๋ค. ์ญ์์ธํ๋๋ ๋จ์ด๊ฐ ์ด๋ ๋ฌธ์์ ๋ํ๋๋์ง๋ฅผ ๊ธฐ๋กํด ๋์ด ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
3.
Elasticsearch๋ ๋ถ์ฐ ์์คํ ์ผ๋ก ์ค๊ณ๋ผ ์์ด์ ์ฌ๋ฌ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํ๊ณ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๋ฐ์ดํฐ ๊ฒ์ ๋ฐ ๋ถ์ ์์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
4.
Elasticsearch๋ ์ค์๊ฐ ๊ฒ์์ ์ง์ํ๊ณ ์์ด์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ๋๋๋ผ๋ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ๋๊ท๋ชจ์ ๋ฐ์ดํฐ์ ์์๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ ๊ธฐ์ฌํ๊ณ ์์ต๋๋ค.
์๋ผ์คํฑ ์์น์ ๊ฒ์์ด ๋น ๋ฅธ ์ด์ ?
[Spring][258] Elasticsearch์
Lucene
์ธ๋ฑ์ฑ
JPQL ์ฟผ๋ฆฌ๋ก ์ง์ ๊ฒ์ ๋ฐฉ์ ์ ํ๊ธฐ
์๋ ์ฟผ๋ฆฌ๋ฅผ
@Query
์ด๋ ธํ ์ด์ ์ ํตํด์ ์์ฑํ์ฌ ๊ฒ์์ ๋ฐฉ์์ ๋ณ๊ฒฝ ํ ์ ์๋ค. ๊ธฐ์กด ์ง์ ๋ด๋ถ ๋ก์ง์ ๊ตฌ์ฑํ๋ ๋ฐฉ์๊ณผ ๋ค๋ฅด๊ฒ, ๋ง์น
JPQL
์ ์ฌ์ฉํ๋๊ฒ ์ฒ๋ผ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑ ํ ์ ์๋ค. ๊ทธ๋ผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฟผ๋ฆฌ๋ฌธ์ด ์ปดํ์ผ ๋จ๊ณ์์ ๊ฒ์ฌ๋์ง ์๋ ๋จ์ ์ด ์์ ๊ฒ์ผ๋ก ๋ณด์ฌ์ง๋ค.
QueryDSL๋ก ๊ตฌํํด๋ณด๊ธฐ
build.gradle
์์กด์ฑ ์ถ๊ฐ
QueryDSL ํ๋ฌ๊ทธ์ธ ๋ฐ ํ์คํฌ ์ค์
[Spring][258] Elasticsearch APIs
EC2 Kibana์ ์ธ๋ถ ์ ์ ํ๊ฒฝ ์ค์
Kibana๋ Elasticsearch์ ๋ฐ์ดํฐ๋ฅผ ๊ด์ ํ๊ณ ๊ฐ์ข ๋ถ์๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๊ฐํ๋ฅผ ๋ด๋นํ๋ HTML + Javascript ์์ง์ด๋ผ ๋ณผ ์ ์์ต๋๋ค.
ํ์ง๋ง EC2์์ ๊ตฌ์ถํ ๊ฒฝ์ฐ ํด๋น ์๋น์ค์ ์ ์ํ๊ธฐ ์ํด์๋ ์ธ๋ถ ์ฌ์ฉ์ ๋๋ ๊ด๋ฆฌ์๊ฐ EC2์๋ฒ์ 5601ํฌํธ์ ์ ๊ทผ ํ ์ ์์ด์ผ ํ๋๋ฐ ๋๋ถ๋ถ์ DB๋ ๊ธฐ๋ณธ์ ์ผ๋ก Localhost๋ฅผ ํตํ ์ ๊ทผ๋ง์ ํ์ฉํ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ธ๋ถ ์ ์์ ๋ํ ์ปค๋ฅ์ ์ ์ด์ด์ฃผ์ด์ผ ํฉ๋๋ค.
Kibana์ ์ค์ ํ์ผ์ EC2์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๋ก์ ์์นํฉ๋๋ค. vi์๋ํฐ๋ฅผ ํตํด CLIํ๊ฒฝ์์ ํ์ผ์ ์์ ํฉ๋๋ค.
server.host
๋ถ๋ถ์ด ๊ธฐ๋ณธ์ ์ผ๋ก
localhost
๋ก ๋์ด์์ผ๋ฉฐ, ์ด๊ฒ ์กฐ์ฐจ ์ฃผ์์ฒ๋ฆฌ๋์ด
default
๊ฐ
localhost
์์ ์๋ ค์ฃผ๊ณ ์์ต๋๋ค. ํด๋น ๋ถ๋ถ์ ์ธ๋ถ ์ ๊ทผ์ ํ์ฉ ํ ์ ์๋๋ก
0.0.0.0
์ ์ ๋ ฅํด์ค๋๋ค.
Kibana์ ๊ธฐ๋ณธ ํฌํธ๋
5601
ํฌํธ์ ๋๋ค.
[Spring][258] AWS EC2 Elastic Stack์ Kibana ์ธ๋ถ ์ ์ ํ๊ฒฝ ์ค์
AWS EC2์ Ubuntuํ๊ฒฝ์์ Elasticsearch๋ฅผ ์ค์น๋ฅผ ์๋ฃํ ์ํ์์๋ EC2์ ์ฅ์์์ localhost:9200์ผ๋ก๋ง Elasticsearch์ ์ ๊ทผ ํ ์ ์์ต๋๋ค. ๋ณธ๋ EC2 ์์ฒด๋ฅผ ์์ฑํ๊ณ Elastic stack์ ์ค์นํ ์ด์ ๋ ํด๋น ์ธ์คํด์ค ์์ฒด๋ฅผ Elasticsearch ์ ์ฉ ์๋ฒ๋ก ์ฌ์ฉํ๊ธฐ ์ํจ์ด๊ธฐ ๋๋ฌธ์ ์คํ๋ง๋ถํธ ํ๋ก์ ํธ๊ฐ ์คํ๋๋ EC2์ RDS๋ก ๊ตฌ์ถ๋ MySQL์์ ํด๋น ์๋ฒ์ ์ธ๋ถ์ ์์ ํตํด์ ์ ๊ทผ ํ ์ ์์ด์ผ ํฉ๋๋ค.
Elasticsearch ์๋น์ค ์์ ๋ฐ ํฌํธํ์ธ
์ฐ์ Elasticsearch๋ ๊ธฐ๋ณธ์ ์ผ๋ก 9200ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๊ธฐ๋ณธ ์ค์ ์์ ํ์ฌ ๋ก์ปฌ ์๋ฒ(EC2)์์๋ง ํต์ ์ด ๊ฐ๋ฅํ๋๋ก ์ง์ ๋์ด ์์ต๋๋ค.
elasticsearch์ ๋๋ถ๋ถ์ ์ค์ ์
elasticsearch.yml
๋ผ๋ ํ์ผ์์ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค. ํด๋น ํ์ผ์ ์ด์ด ์ผ๋ถ๋ถ ์์ ํ์ฌ ์ธ๋ถ ์ฃผ์๋ก ์ ๊ทผ ํ ์ ์๋๋ก ํ๊ณ ์ ํฉ๋๋ค.
ํด๋น ํ์ผ์ ์ด์ด๋ณด๋ฉด path๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ถ๋ถ์ด ์ฃผ์์ฒ๋ฆฌ๋ ์ํ๊ฐ ๊ธฐ๋ณธ์ ๋๋ค.
[Spring][258] AWS EC2 Elasticsearch ์ธ๋ถ ์ ์ ํ๊ฒฝ ์ค์
๋ก์ปฌ(๋์ ์ปดํจํฐ)์ ์ธ๋ถ์ ์ ํ๊ฒฝ ๋ง๋ค์ด์ ํ ์คํธํ๊ธฐ
MySQL์ ๋์๋ฐ์ดํฐ๋
book
ํ ์ด๋ธ์ ์กด์ฌํ๊ณ 709๋ง ๊ฐ์ ๋์ฉ๋๋ฐ์ดํฐ๋ก ์ด๋ ์ฑ๊ณต ๋ฐ ์คํจ๋ฅผ ๋ ๋ AWS์ ํฐ ๋น์ฉ์ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ถฉ๋ถํ ํ ์คํธ๋ฅผ ์งํํ๊ณ ์๋ ๊ณผ์ ์ ๋๋ค. ๋ฐ๋ผ์ ๋น๊ต์ ๋ฐ์ดํฐ์์ด ์ ์
book_category
๋ก ํ ์คํธ๋ฅผ ์ฐ์ ์งํํ๊ณ ์ ํฉ๋๋ค.
Elasticsearch, Logstash, Kibana๋ ๋ค๋ฅธ ์ปดํจํฐ(EC2 ์ธ์คํด์ค)์ ์์ผ๋ฉฐ ํนํ Logstash๋ ๋ด ์ปดํจํฐ์ MySQL์ ์ ๊ทผํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ด ์ปดํจํฐ์ MySQL์ ์ธ๋ถ ์ ์์ ๊ฐ๋ฅํ๋๋ก ํด์ผ ํฉ๋๋ค.
์ด๋ AWS RDS์ MySQL์ ๊ตฌ์ถํด๋ ํ๋ก์ ํธ์ ๋ฐฉํฅ๊ณผ ๋น์ทํ๊ฒ localhost๊ฐ ์๋ ํน์ ์ฃผ์๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ฌ ์ ์๋์ง์ ๋ํ ์๊ฒฉ ์ ๊ทผ์ ํ ์คํธํ๊ธฐ ์ํจ์ ๋๋ค.
๋์ ๋ก์ปฌ ์ปดํจํฐ์ ์ฝ์์์ MySQL์ ์ค์ ํ์ผ์ ์ฐพ์์ผ ํฉ๋๋ค. ์ฐ์
my.cnf
๋๋
my.ini
๋ผ๋ ํ์ผ์ ์ฐพ์์ผ ํฉ๋๋ค. ์ ์ ๊ฒฝ์ฐ Homebrew๋ฅผ ํตํด MySQL์ ์ค์น ํ๊ธฐ ๋๋ฌธ์
/usr/local/etc/
๋ผ๋ ๊ฒฝ๋ก์์ ์ฐพ์ ์ ์์ต๋๋ค.
ํด๋น ํ์ผ์ vi ์๋ํฐ๋ฅผ ํตํด ์ด์ด๋ณด๋ฉด MySQL server ์ค์ ์ ๋ณด๊ฐ ๋ํ๋์์ต๋๋ค. ๊ธฐ๋ณธ ์ค์ ์ localhost๋ก ์๋ํ๋๋ก ๋์ด ์์ต๋๋ค.
[Spring][258] AWS EC2์ ๊ตฌํ๋ Elasticsearch ์ ๋ด ์ธ๋ถ(RDS) MySQL ๋ฐ์ดํฐ ์ ๋ฌ ํ ์คํธ ๋ฐ EC2 ์ค์ผ์ผ์
AWS EC2์ Elasticsearch ์ค์นํ๊ธฐ
Elasticsearch ์ ์ฉ EC2 ์ธ์คํด์ค ์์ฑํฉ๋๋ค. ๊ตฌ๊ธ๋ง์ ํตํด ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ฆฌํฐ์ด์์ ์ฌ์ฉ๋๋ t1.micro๋ก๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ๊ณ , t2.medium(2core CPU / 4GB RAM)์ ์ต์ด ๊ตฌ์ฑํ๋ ๊ฒ์ด ์์ ์ ์ธ ํ ์คํธ๊ฐ ๋ ๊ฒ์ผ๋ก ํ๋จ๋์์ต๋๋ค.
์ธ์คํด์ค์ ์ ์
๊ธฐ๋ณธ์ ์ผ๋ก AWS ์๋น์ค์ ํคํ์ด๋ฅผ ์์ฑํ๊ณ ๋ก์ปฌ์ ๋ค์ด ๋ฐ๋ ๊ณผ์ ์ ์๋ตํ์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก
{keyname}.pem
์ด๋ผ๋ ํ์ฅ์์ ์ฌ์ฉ์ ํค๋ฅผ ๋ก์ปฌ์ ๋ฐ์ ์ ์๊ณ ์ด๊ฒ์ ํตํด์ EC2๋ฅผ ์ ์ํ ์ ์๋ ๊ถํ์ ์ป๊ฒ ๋ฉ๋๋ค. FTP ์ ์์์๋ ํ์ํ ์ธ์ฆ ๋ฐฉ๋ฒ์ ๋๋ค.
AWS ์ฝ์์์ ๊ฐ๋จํ ๋ธ๋ผ์ฐ์ ์์๋ ์ฝ์๋ก EC2 ๋ด๋ถ์ ์ ๊ทผ ํ ์๋ ์์ต๋๋ค. SSH ํด๋ผ์ด์ธํธ์์ ์ ๊ณตํด์ฃผ๋ CLI ๋ช ๋ น์ด๋ฅผ ํตํด์ ๋ก์ปฌ ํฐ๋ฏธ๋์ ํตํด EC2๋ก ์ ๊ทผํ์ต๋๋ค.
Elasticsearch ์ค์น๋ฅผ ์ํ JDK ์ค์น
[Spring][258] AWS EC2 ubuntu ํ๊ฒฝ์ Elasticsearch ๊ตฌ์ถ
MySQL DB์ ๋ฐ์ดํฐ์ Elasticsearch ๋ฐ์ดํฐ๋ ๋๊ธฐํ๋ก ์ผ๊ด์ฑ์ ์ ์งํด์ผ ํ๋ค.
๊ธฐ์กด MVP ๊ธฐ๋ฅ์ผ๋ก ๋์์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๋ ๋ถ๋ถ๋ค์ด ์์ต๋๋ค. ํนํ Elasticsearch์ ์ฐ๊ฒฐ๋ ๋์ ๋ชฉ๋ก์์ ์ฌ์ฉ์๋ ๋์ ๋์ถ, ๋์ ๋์ถ ์์ฝ์ ์งํ ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ ๋์ ๋์ถ์ ์งํํ๋ฉด ๋์์ ๋์ถ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์ ์ ์๋
Status
์ปฌ๋ผ์
POSSIBLE
์์
IMPOSSIBLE
๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. ํด๋น ๊ธฐ๋ฅ์ HTML์ Ajax HTTP ์์ฒญ์ ํตํด MySQL DB์ ์๋ ๋์ book_id์ ๋์์ ์ํ๋ฅผ ์ฆ์ ๋ณ๊ฒฝํ์ง๋ง, Elasticsearch๋ MySQL์ DB๋ฅผ Logstash๋ก ๊ฐ์ ธ์์ ์ธ๋ฑ์ฑํ๊ธฐ ๋๋ฌธ์ ์ด ๊ณผ์ ์์ ์๋ก ๋ชฉ๋ก์ ๋ถ๋ฌ์์ผ ํ ํ์์ฑ์ด ์์ต๋๋ค.
Logstash์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ถ์ ์ค์ ํ์์ฑ
๊ธฐ์กด Logstash๋ฅผ ํตํด MySQL์ DB๋ฅผ ์ ๋ฌํ์ฌ ์์ธํ๋ ๋ถ๋ถ์ ๋๋ค. 709๋ง๊ฐ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ฝ์ด์ค๋ ๊ณผ์ ์์ JVM์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ํ์์ด ๋ฐ์ํ์ฌ 200๋ง๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๊ณ Elasticsearch๋ก ์ ๋ฌํ๋๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค.
ํ์ง๋ง ์ด ๋ถ๋ถ์์ ์ค์ ์ ๋ฌธ์ ์ ์ด ์์ต๋๋ค.
[Spring][258] MySQLโLogstashโElasticsearch ์ ๋๊ธฐํ ์ฒ๋ฆฌ์์ ๋ฐ์ํ๋ ๋ฌธ์
๋ฉ์ธ ์๋ฒ ์ค์บ์ผ ์
โข
๊ธฐ์กด ์ธ์คํด์ค t1.micro์์ c5.large๋ก ๋ณ๊ฒฝ
โข
IOPS 3000
์ด๋ฒคํธ ์ ์ฉ ์๋ฒ ์ค์บ์ผ ์
[Spring][258] ์๋ฒ ์ค์ผ์ผ ์ : AWS EC2 ์ธ์คํด์ค ์ ๊ทธ๋ ์ด๋ ๋ฐ ์ฑ๋ฅ ํฅ์