ํ๋์ ๊ฐ์ค์น ๋๊ธฐ
ํน์ ํ๋์ ๊ฐ์ค์น๋ฅผ ๋๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ - ๋ถ์คํ ๊ธฐ๋ฒ. ์ฆ ๊ฒ์ํ๋ ์ฌ๋ฌ ํ๋ ์ค ์ค์ํ ํ๋๋ฅผ ์๊ณ ์๋ค๋ฉด ๊ทธ ํ๋์ ๊ฐ์ค์น๋ฅผ ๋์ด ๋ ์์๋ก ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ
GET product/_search
{
"query": {
"multi_match": {
"query": "๋งจํฌ๋งจ",
"fields": [
"category2",
"title^2"
]
}
}
}
ํน์ ํ๋์ ๊ฐ์ค์น๋ฅผ ์ค์ ํน์ ํ๋์ ์ค์ฝ์ด ๊ฐ์ N๋ฐฐ ํด์ฃผ๋ ํจ๊ณผ๋ฅผ ์ค๋ค. ์ ์ฟผ๋ฆฌ์์๋ title ํ๋์ 2๋ฐฐ์ ํจ๊ณผ๋ฅผ ์ฃผ์๋ค. ์ฆ title ํ๋์์ ๊ฒ์ํ ๊ฒฐ๊ณผ ์ค์ฝ์ด์ 2๋ฐฐ์ ํจ๊ณผ๋ฅผ ์ฃผ์ด ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ์์๋ก ์ฌ๋ ธ๋ค.
๋ ผ๋ฆฌ ์ฟผ๋ฆฌ
๋ ผ๋ฆฌ ์ฟผ๋ฆฌ๋ ๋ณตํฉ ์ฟผ๋ฆฌ๋ก, match, multi_math, match_phrase ๋ฑ์ ์กฐํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
Must ํ์ - ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ์ฐธ์ธ ๋ํ๋จผํธ๋ฅผ ์ฐพ๋๋ค. ๋ณต์์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด And ์ ํจ๊ณผ
Must Not ํ์ - ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ๊ฑฐ์ง์ธ ๋ํ๋จผํธ๋ฅผ ์ฐพ๋๋ค. ๋ค๋ฅธ ํ์ ๊ณผ ๊ฐ์ด ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ํ๋จผํธ์์ ์ ์ธํ๋ค.
Should ํ์ - ๋จ๋ ์ผ๋ก ์ฌ์ฉ ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ์ฐธ์ธ ๋ํ๋จผํธ๋ฅผ ์ฐพ๋๋ค. ๋ณต์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด OR ์ฐ์ฐ. ๋ค๋ฅธ ํ์ ๊ณผ ๊ฐ์ด ์ฌ์ฉํ ๊ฒฝ์ฐ ์ค์ฝ์ด์๋ง ํ์ฉ๋๋ค.
filter - ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ bool ํํ์ ํํฐ ๊ฒ์์ ์ํํ๋ค.
์ ์กฐํฉ์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ํ๋ฒ ๋ง๋ค์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์กฐ๊ฑด
์ฌ์ฑ์ ๋ฆฌ๋ทฐ๋ฅผ ์ฐพ๋๋ค. โ์ค๋ฒํโ ๋๋ โ๋ง์(๋ง์์ ๋ค์ด์ ๋ฑ)โ์ด๋ผ๋ ํค์๋๊ฐ ํฌํจ๋ ๋ฆฌ๋ทฐ์ด๋ฉด์ โ์ฌ์์น๊ตฌโ๋ผ๋ ๋จ์ด๋ ํฌํจํ์ง ์๋๋ค(์ฌ์์น๊ตฌ๊ฐ ์ฌ์คฌ์ด์, ์ฌ์์น๊ตฌ์๊ฒ ์ฌ์คฌ์ด์ ๋ฑ ๋จ์ฑ์ด ์์ฑํ๋ ๋ฌธ๊ตฌ๋ ์ ์ธ). ๋ํ ์ฑ๋ณ ์์ธก๊ฐ์์ ์ฌ์ฑ ์ฑ๋ณ๊ฐ์ 2๋ฐฐ ๋ถ์คํ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ธก ๊ฐ์์ ์ฌ์ฑ์ ๊ฐ์ด 0.5 ์ด์(์ฌ์ฑ์ผ ํ๋ฅ ์ด 50%๊ฐ ๋๋)์ธ ๋ฆฌ๋ทฐ๋ง ๊ฐ์ ธ์จ๋ค.
GET review/_search
{
"query": {
"bool": {
// ์ค๋ฒํ ์ด๋ผ๋ ๋จ์ด์ ๋ง์์ด๋ผ๋ ๋จ์ด๊ฐ ํฌํจ๋์ด์ผ ํ๋ค.
"must": [
{"match": {"review": "์ค๋ฒํ ๋ง์"}}
],
// ์ฌ์์น๊ตฌ ๋ผ๋ ๋จ์ด๋ ํฌํจ๋์ง ์์์ผ ํ๋ค.
"must_not": [
{"match": {"review": "์ฌ์์น๊ตฌ"}}
]
// gender ์์ธก ๊ฐ์์ ์ฌ์ฑ ๊ฐ์ ๋ถ์คํธ๋ฅผ ์ ์ฉ
, "should": [
{
"rank_feature": {"field": "genders.female", "boost": 2}
}
],
// gender ์์ธก ๊ฐ์์ 0.5 ์ด์, ์ฆ ์ฌ์ฑ์ด ์์ฑํ ๋ฆฌ๋ทฐ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฆฌ๋ทฐ๋ง ํํฐ๋ง
"filter": {
"range": {
"gender.female": {
"gte": 0.5
}
}
}
}
}
}
ํจํด ๊ฒ์
์์ผ๋์นด๋ ์ฟผ๋ฆฌ
์์ผ๋์นด๋ ๊ฒ์ ์์ โ*โ , โ?โ ๋ผ๋ ๋ ๊ฐ์ง ๊ธฐํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
โ*โ ๋ ๊ณต๋ฐฑ๊น์ง ํฌํจํ์ฌ ๊ธ์ ์์ ์๊ด์์ด ๋ชจ๋ ๋ฌธ์๋ฅผ ๋งค์นญํ ์ ์๊ณ , โ?โ๋ ์ค์ง ํ ๋ฌธ์๋ง ๋งค์นญํ ์ ์๋ค.
๊ฒ์ํ๋ ค๋ ์ฉ์ด ๋งจ ์์ โ*โ, โ?โ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๊ฐ ๋งค์ฐ ๋๋ ค์ง๋ค.
์ ๊ท์ ์ฟผ๋ฆฌ
์๋ผ์คํฑ ์์น ์ฟผ๋ฆฌ์์ ์ ๊ท์์ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋ค.
GET review_pos/_search
{
"query": {
"regexp": {
"review.nori_noun": "๋งจํฌ."
}
}
}
๐ฅ ํจํด ๊ฒ์์ผ๋ก ์ํ๋ ๋ด์ฉ์ ๊ฒ์ํ ์ ์๋ค. ํ์ง๋ง ์ผ๋ฐ์ ์ธ ์ฟผ๋ฆฌ๋ณด๋ค๋ ์๋๊ฐ ๋๋ฆฌ๋ค. ์ค์ ์๋น์ค์์ ์ฌ์ฉ์ ์ด๋ ค์ธ ๋ฏ ํ๋ค.
'Elastic Search' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Elastic Search] MBTI ๊ฒ์ ํ๋ก์ ํธ - 1. ๊ฒ์ Score ํ๋ (0) | 2022.04.12 |
---|---|
[Elastic Search] ๊ฒ์ ๊ตฌํํ๊ธฐ(with Fast API) (0) | 2022.02.15 |
[Elastic Search] Nori Tokenizer & Filter ์ ์ฉ๊ธฐ (0) | 2022.02.09 |
[Elastic Search]Query ์คํฐ๋-2ํธ Term ์ฟผ๋ฆฌ, Multi-match ์ฟผ๋ฆฌ (0) | 2022.01.29 |
[Elastic Search] Query ์คํฐ๋-1ํธ Match, Match Phrase (0) | 2022.01.27 |