๐ซ
Yoongeon Dev
/
Category Posts (none)
/
Elasticsearch
Search
Share
Elasticsearch
[ES] Elasticsearch ์ฃผ์ API ์ ๋ฆฌ
[ES] Elasticsearch ์ฃผ์ API ์ ๋ฆฌ
[ES] Token filter ์ ๋ฆฌ
[ES] Token filter ์ ๋ฆฌ
[ES] tokenizer ์ ๋ฆฌ
[ES] tokenizer ์ ๋ฆฌ
[ES] Character filters ์ ๋ฆฌ
[ES] Character filters ์ ๋ฆฌ
[ES] ์ญ์์ธ(Inverted Index), Analyzer ์ ๋ฆฌ
[ES] ์ญ์์ธ(Inverted Index), Analyzer ์ ๋ฆฌ
[ES] Elasticsearch ์์ธ ๊ณผ์ + shard ๋ฐฐ์น ์ฐ๊ณ
[ES] Elasticsearch ์์ธ ๊ณผ์ + shard ๋ฐฐ์น ์ฐ๊ณ
[ES] ์ธ๋ฑ์ค์ ์ค๋ ๊ฐ๋ ์ ๋ฆฌ
[ES] ์ธ๋ฑ์ค์ ์ค๋ ๊ฐ๋ ์ ๋ฆฌ
[ES] ํด๋ฌ์คํฐ์ ๋ ธ๋ ๊ฐ๋ ์ ๋ฆฌ
[ES] ํด๋ฌ์คํฐ์ ๋ ธ๋ ๊ฐ๋ ์ ๋ฆฌ
[ES] ElasticSearch๋?
[ES] ElasticSearch๋?
1. ์ธ๋ฑ์ค(Index)
์์ฑ
์กฐํ
์ญ์
์ธ๋ฑ์ค ์กด์ฌ ์ฌ๋ถ ํ์ธ
[ES] Elasticsearch ์ฃผ์ API ์ ๋ฆฌ
Token Filter๋?
tokenizer
์์
term
๋ถ๋ฆฌ ๊ณผ์ ์ดํ์๋ ๋ถ๋ฆฌ๋ ๊ฐ๊ฐ์
term
๋ค์ด ์ง์ ๋ ๊ท์น์ ๋ฐ๋ผ์ ์ฒ๋ฆฌ๋๋๋ฐ ์ด ์ญํ์
token filter
๊ฐ ์งํํ๋ค.
token filter
๋
filterํญ๋ชฉ์ ๋ฐฐ์ด๋ก ์ง์
ํด์ผ ํ๊ณ ,
์ง์ ํ ๋ฐฐ์ด ์์๋๋ก ํํฐ๊ฐ ๋์
ํ๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ์ ๊ณ ๋ คํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด
whitespace
tokenizer
๋ก ๋๋๋ฉด
์ด๊ฑธ
lowercase
,
stop
ํ ํฐ ํํฐ๋ฅผ ์ ์ฉํ๋ฉด
์ฃผ์ Token Filter ์ข ๋ฅ
1.
lowercase
๋ชจ๋ term๋ค์ ์๋ฌธ์๋ก ๋ฐ๊พผ๋ค
[ES] Token filter ์ ๋ฆฌ
Tokenizer๋?
Tokenizer
๋
Elasticsearch
Analyzer
์ค 2๋ฒ์งธ๋ก ๋์ํ๋ ๊ตฌ์ฑ ์์๋ก์จ
Character Filter
์์ ์ฒ๋ฆฌ๋
๋ฌธ์์ด์ ์๊ฒ ๋๋์ด์ ํ ํฐ์ ๋ง๋๋ ์ญํ
์ ํ๋ค.
์๋ฅผ ๋ค์ด,
โelasticsearch is a search engineโ
์ด๋ผ๋ ๋ฌธ์ฅ์ standard tokenizer๋ก ๋ถ์ํ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ด ๋๋์ด์ง๊ฒ ๋๋ค.
Tokenizer์ ์ข ๋ฅ
1.
Standard
: ๊ณต๋ฐฑ์ผ๋ก term์ ๊ตฌ๋ถํ๋ฉด์ ํน์ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋ค. (
default
)
2.
whitespace
: ๊ณต๋ฐฑ์ผ๋ก๋ง term์ ๊ตฌ๋ถ
3.
keyword
: ๋ฌธ์์ด ์ ์ฒด๋ฅผ ํ ๋ฉ์ด๋ฆฌ๋ก ์ ์ฅ
4.
uax_url_email
: URL์ด๋ ์ด๋ฉ์ผ์ ํ๋์ ํ ํฐ์ผ๋ก ์ ์ง
[ES] tokenizer ์ ๋ฆฌ
์ด๋ฒ ํฌ์คํธ๋
Analyzer
์ค ๊ฐ์ฅ ๋จผ์ ๋์ํ๋ ๊ธฐ๋ฅ์ธ
Character filter
์ ๋ํด์ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํ๋ค.
์บ๋ฆญํฐ ํํฐ๋?
์บ๋ฆญํฐ ํํฐ
(
Character filter
) ๋
Elasticsearch
Analyzer
์ค ์ฒซ ๋ฒ์งธ ๊ธฐ๋ฅ์ผ๋ก
ํ ์คํธ๋ฅผ ๋ฌธ์ ์์ค์์ ์ ์ฒ๋ฆฌ๋ฅผ ์ํ
ํ๊ฒ ๋๋ค.
์ฃผ์ ํน์ง
1.
ํ ์คํธ ๋ด์์ ํน์ ๋ฌธ์๋ฅผ ์นํํ๊ฑฐ๋ ์ ๊ฑฐํ๋ค
2.
HTML, ํน์ ๋ฌธ์ ๋ฑ์ ์ ๊ฑฐํ๋ค
ํํฐ ์ข ๋ฅ
Elasticsearch์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ character filter๋ ๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ง๊ฐ ์๋ค.
1.
HTML Strip
2.
Mapping
[ES] Character filters ์ ๋ฆฌ
Elasticsearch
์ ์ ํต์ ์ธ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(
RDBMS
)๋ ๋ฐ์ดํฐ ๊ฒ์ ๋ฐฉ์์์ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋ค.
Elasticsearch
๊ฐ
DB
๋ณด๋ค ๋ ๋น ๋ฅธ ๊ฒ์ ์๋๋ฅผ ๋ณด์ด๋ ์ด์ ๋ ๋จ์ํ ๋ฐ์ดํฐ ์ ์ฅ์ด ์๋
์์ธ ๊ณผ์
์ด ์๊ธฐ ๋๋ฌธ์ธ๋ฐ, ์ด์
Elasticsearch
์
DB
์
๊ฒ์ ๋ฐฉ์ ์ฐจ์ด
์ ๋ํด ์ดํด๋ณด๋ ค๊ณ ํ๋ค.
DB์์๋ ์๋์ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์์ ๋,
Java
๋ฅผ ๊ฒ์ํ๋ฉด 1๋ฒ๋ถํฐ 4๋ฒ๊น์ง์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ํ์ธํ๋ฉด์
Java
๋ผ๋ ๋จ์ด์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ๋ค. ์ด๋ฌํ ๊ตฌ์กฐ์์๋ ๊ฒฐ๊ณผ์ ์ผ๋ก 2๋ฒ๊ณผ 4๋ฒ ๋ฐ์ดํฐ๊ฐ ์กฐํ๊ฐ ๋๋ค.
์ด๋ฌ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋์ด๋ ์๋ก ๊ฒ์ ๋์๋ ๋์ด๋๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋จ์ ์ด ์๊ธฐ๊ฒ ๋๋ค.
์ญ ์ธ๋ฑ์ค (Inverted Index)
Elasticsearch์์๋ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ค์ ๊ฐ ํค์๋(
Term
) ๋ณ๋ก ๋ถ๋ฅํ ๋ค ํด๋น ํค์๋๊ฐ ์๋ ๋ฌธ์์ ์์ด๋๋ฅผ ์ ์ฅํ๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ฌ์ฉ์๊ฐ Java๋ฅผ ๊ฒ์ํ๋ฉด ๋ฐ๋ก 2, 4๋ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ด์ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋์ ๋ Term์ด ๊ฐ๋ฆฌํค๋ ID์ ๋ฐฐ์ด์ ๋ฒํธ๋ง ์ถ๊ฐ๋๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ค๊ณ ํด์ ์๋ ๋ณํ์ ํฐ ์ฐจ์ด๊ฐ ์๋ค.
[ES] ์ญ์์ธ(Inverted Index), Analyzer ์ ๋ฆฌ
์ด๋ฒ ๊ธ์์๋ ์์ธ์ ๋ํด์ ์์ธํ ์ ๋ฆฌํ๊ธฐ ๋ณด๋ค๋, ๋ฌธ์๊ฐ ๋ค์ด์์ ๋ ์์ธ๋๋ ๊ณผ์ ๊ณผ Elasticsearch shard ๋ฐฐ์น์ ์ฐ๊ด ์ง์ด์ ์ ์ฒด์ ์ธ ํ๋ฆ์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค.
์์ธ(Indexing) ์ด๋?
๋ฌธ์๋ฅผ ๋ถ์ํ๊ณ ์ ์ฅํ๋ ๊ณผ์ ์
์์ธ
์ด๋ผ๊ณ ์ ์ํ๋ค. Elasticsearch์์ ๋ฌธ์๋ฅผ ๋ถ์ํ๊ณ ์ ์ฅํ๋ ์ผ๋ จ์ ๊ณผ์ ์ ์์ธ ์ด๋ผ๊ณ ํ๋ค.
ํ ํด๋ฌ์คํฐ ์์ 3๊ฐ์ ๋ ธ๋๊ฐ ์๊ณ ํน์ ์ธ๋ฑ์ค๊ฐ 4๊ฐ์ ์ค๋๋ก ๊ตฌ์ฑ ๋์ด ์๋ค๋ฉด ์๋์ ๊ฐ์ ์ด๋ฏธ์ง์ ํํ๋ฅผ ํ๊ณ ์์ ๊ฒ ์ด๋ค.
Primary shard
๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ณธ ๋จ์์ด๋ฉฐ
Replica shard
๋ Primary shard์ ๋ณต์ฌ๋ณธ์ด๋ค. Primary shard์ Replica shard๋
์ฅ์ ๋ณต๊ตฌ๋ ๋ฐฑ์ , ์ฝ๊ธฐ ๋ถํ ๋ถ์ฐ์ฉ
์ผ๋ก
๋ฐ๋์ ๋ค๋ฅธ ๋ ธ๋์ ์์น
ํด ์์ด์ผ ํ๋ค.
์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ฌธ์ ์์ธ์ ์์ฒญํ๋ฉด Elasticsearch๋ ๋ฌธ์ ID์ ์ค๋ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ Primary ์ค๋์ ์ ์ฅํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
[ES] Elasticsearch ์์ธ ๊ณผ์ + shard ๋ฐฐ์น ์ฐ๊ณ
์ธ๋ฑ์ค(Index)๋?
์ธ๋ฑ์ค
๋ oracle์ด๋ mysql ๊ฐ์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
ํ ์ด๋ธ๊ณผ ๋น์ทํ ๊ฐ๋
์ด๋ค. ์ธ๋ฑ์ค๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด Elasticsearch๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ฒซ ๋จ๊ณ์ด๋ค.
์ ์
์ธ๋ฑ์ค๋ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ฌธ์๋ค์ ๋ชจ์์ด๋ฉฐ, Elasticsearch์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ๋ ผ๋ฆฌ์ ์ธ ๋จ์์ด๋ค.
์๋ฅผ ๋ค์ด
โข
user_index โ ์ฌ์ฉ์ ์ ๋ณด ๋ฌธ์๋ค์ ๋ชจ์
โข
blog_index โ ๋ธ๋ก๊ทธ ๊ธ ๋ฌธ์๋ค์ ์งํฉ
โข
log_index โ ์์คํ ๋ก๊ทธ ๋ฐ์ดํฐ ๋ฌธ์๋ค์ ์งํฉ
ํน์ง
ํ๋์ ์ธ๋ฑ์ค๋ ์ ๋ง์ ๋ฌธ์๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์ธ๋ฑ์ค๋ ๋ด๋ถ์ ์ผ๋ก
์ค๋(shard)
๋ผ๋ ๋จ์๋ก ๋๋์ด์ ธ ์ ์ฅ๋๋ค.
[ES] ์ธ๋ฑ์ค์ ์ค๋ ๊ฐ๋ ์ ๋ฆฌ
Elasticsearch์ ํด๋ฌ์คํฐ๋ ?
์ผ๋ฐ์ ์ผ๋ก
ํด๋ฌ์คํฐ(Cluster)
๋
ํ ๋ ์ด์์ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด ๋ง์น ํ๋์ ์์คํ ์ฒ๋ผ ๋์ํ๋ ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค.
Elasticsearch
์์๋ ์ด๋ฌํ ํด๋ฌ์คํฐ ๊ตฌ์กฐ๋ฅผ ํตํด์, ์ฌ๋ฌ ๋ ธ๋๊ฐ ๊ฐ์์ ์ญํ ์ ์ํํ๋ฉด์
ํ๋์ ํตํฉ๋ ์์คํ
์ฒ๋ผ ์๋ํ๊ฒ ๋๋ค.
ํ๋์ ์์คํ ์ฒ๋ผ ๋์ํ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ํ ํด๋ฌ์คํฐ ์์ ์ด๋ ํ ๋ ธ๋์๊ฒ ์์ฒญ์ ๋ณด๋ด๋ ๋ชจ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ฒ ๋๋ค.
Elasticsearch์์ ํด๋ฌ์คํฐ๋ ํ๋ ์ด์์ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง ์ ์ฒด ์์คํ ์ผ๋ก ์ ์
ํ ์ ์๋๋ฐ, ํด๋ฌ์คํฐ๋ ์๋์ ๊ฐ์ ํน์ง์ด ์๋ค.
ํด๋ฌ์คํฐ ์ด๋ฆ(cluster name) ์ผ๋ก ๊ณ ์ ํ๊ฒ ์๋ณ ๋๋ค.
ํด๋ฌ์คํฐ ๋ด๋ถ์ ๋ชจ๋ ๋ ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ณ ํ๋ ฅํ์ฌ, ์์ธ(indexing)๊ณผ ๊ฒ์(query) ์์ ์ ์ฒ๋ฆฌํ๋ค.
์ฌ์ฉ์ ์ ์ฅ์์๋ ํด๋ฌ์คํฐ ์ ์ฒด๊ฐ ํ๋์ ํตํฉ๋ ์์คํ ์ฒ๋ผ ๋ณด์ธ๋ค.
๋ ธ๋๋?
Elasticsearch
์์
๋ ธ๋
๋
ํด๋ฌ์คํฐ์ ๊ตฌ์ฑ ์์์ด์ ์ค์ ์์ ์ ์ํํ๋ ํ๋์ ์ธ์คํด์ค
์ด๋ค. ๊ฐ ๋ ธ๋๋ค์ ๊ฐ์์ ์ญํ ์ด ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ์ ์ฅ, ๊ฒ์, ์์ธ ๋ฑ์ ์์ ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
ํ ๋ง๋๋ก ์ ๋ฆฌํ์๋ฉด,
๋ ธ๋๋ ํด๋ฌ์คํฐ์ ๊ตฌ์ฑ ์์์ด์ ์ค์ ์์ ์ ์ํํ๋ ํต์ฌ ๋จ์
์ด๋ค.
[ES] ํด๋ฌ์คํฐ์ ๋ ธ๋ ๊ฐ๋ ์ ๋ฆฌ
์๋ผ์คํฑ์์น๋?
์๋ผ์คํฑ์์น(Elasticsearch)
๋ ์๋ฐ ๊ธฐ๋ฐ์ ์ํ์น ๋ฃจ์ฌ(Apache Lucene) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ๋ฐ๋
์คํ ์์ค ๊ฒ์ ์์ง
์ด๋ฉฐ, json ๊ธฐ๋ฐ์ ๋ฌธ์๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์๊ณผ ๋ถ์์ด ๊ฐ๋ฅํ๋ค.
์๋ผ์คํฑ์์น์ ํน์ง
1.
์ค ์ค์๊ฐ ๊ฒ์ ์์คํ
2.
๊ณ ๊ฐ์ฉ์ฑ์ ์ํ ํด๋ฌ์คํฐ ๊ตฌ์ฑ
3.
๋์ ์คํค๋ง ์์ฑ
4.
REST API ๊ธฐ๋ฐ์ ์ธํฐํ์ด์ค
5.
ELK ์คํ์ ํต์ฌ ๊ตฌ์ฑ ์์
Reference
[ES] ElasticSearch๋?