[Elasticsearch] ๋ณตํฉ ์ฟผ๋ฆฌ (Boolean)
https://blog.naver.com/sssang97/222431994969
์ง๋๋ฒ ํฌ์คํธ์์๋ ๋จ์ผ ์กฐ๊ฑด์ผ๋ก ๊ฒ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ค๋ดค์๋ค.
๊ทธ๋ฆฌ๊ณ ๋น์ฐํ๊ฑฐ์ง๋ง, ๊ทธ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ๊ฒ์์ ๊ตฌํํ ์๋ ์๋ค.
bool ์
์ฌ๋ฌ๊ฐ์ง ๊ฒ์์กฐ๊ฑด์ ํ๋ฒ์ ๋ฌถ์ด์ฃผ๋ ค๋ฉด AND๋ OR ๊ฐ์ ๋
ผ๋ฆฌ์์ด ํ์ํ๋ฐ,
๊ทธ๋ฐ๊ฑธ ๋ฌถ์ด์ฃผ๋๊ฒ ๋ฐ๋ก bool ์ ์ด๋ค.
bool์๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ๋ค์ด ๋ค์ด๊ฐ ์ ์๋ค.
must, should, must_not, filter๋ค.
POST products2/_search
{
"query": {
"bool": {
"must": [],
"should": [],
"must_not": [],
"filter": []
}
}
}
ํ๋์ฉ ํ๋ฒ ์ดํด๋ณด๊ฒ ๋ค.
must ์
must๋ ์ฐ๋ฆฌ๊ฐ ์๋ AND ์ ๊ณผ ๊ฑฐ์ ๋๋ฑํ ๊ธฐ๋ฅ์ด๋ค.
must ์์ ๋ค์ด์๋ ์กฐ๊ฑด๋ค์ด ์ ๋ถ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ์ ์๋ฅผ ๋ถ์ฌํด์ ๊ฒฐ๊ณผ์ ๋
ธ์ถํด์ค๋ค.
์ด๋ ๊ฒ ํ๋ฉด shop_id๊ฐ 1์ด๊ณ brand_id๊ฐ 1์ธ ํญ๋ชฉ๋ง ๋
ธ์ถ๋๋ค.
should ์
์ด๊ฑด OR ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.
์์ ์๋ ์กฐ๊ฑด๋ค ์ค์ ํ๋๋ง ๋ถํฉํด๋ ์ ์๊ฐ ๋ถ์ฌ๋ผ์ ๋
ธ์ถ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๊ฐ์ ์กฐ๊ฑด์ด ์ผ์นํ๋ฉด ๊ทธ๋งํผ ๋ ๋ง์ ์ ์๋ฅผ ๋ฐ๊ณ ๋ ์์ ๋
ธ์ถ๋๋ค.
์ด๋ ๊ฒ ํ์ ๊ฒฝ์ฐ shop_id๊ณผ brand_id ๋์ค ํ๋๋ง ์ผ์นํด๋ ๋ค ๋
ธ์ถ๋์ง๋ง, ๋๋ค ์ผ์นํ๋๊ฒ ์ ์ผ ์์ ๋์ค๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
must_not ์
์ด๊ฑด must๋ฅผ ๊ทธ๋๋ก ๋ฐ์ ํด๋์ ๊ธฐ๋ฅ์ด๋ค.
์์ ์๋ ์กฐ๊ฑด๋ค์ด ์ ๋ถ ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ์๋ง ์ ์๋ฅผ ๋ถ์ฌํ๋ค.
shop_id์ brand_id ๋๋ค ์๋ง๋ "์๋์ปฌํ ๋ถ๋ญ๋ณถ์๋ฉด"์ด ๋
ธ์ถ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
filter ์
์์์ ๋ค๋ฃฌ ์กฐ๊ฑด์ ๋ค์ ์ ๋ถ ํด๋น ์กฐ๊ฑด์ ๋ถํฉํ ๊ฒฝ์ฐ '์ ์'๋ฅผ ๋ถ์ฌํ๋ ์์คํ ์ด๋ค.
์ ์๋ฅผ ๋ถ์ฌํ๊ณ ์ ์๊ฐ ๋์ ์์๋๋ก ๋ณด์ฌ์ฃผ๋ ๊ฒ ๋ฟ์ธ๋ฐ, ์ ์์ ๋ณ๊ฐ๋ก ๊ทธ๋ฅ ํ๋ณด์์ ์์ ๊ฑธ๋ฌ๋ฒ๋ฆฌ๊ณ ์ถ์ ์๋ ์๋ค.
ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๊ฑธ ๊ฐ๋ฅํ๊ฒ ํ ์ ์๋ค. ์ด๊ฑด ์ ์๋ฅผ ๋ฐ์ง์ง ์๊ณ ์กฐ๊ฑด์ ๋ถํฉํ๋ ๊ฒ๋ง ์ ๋ถ ํํฐ๋งํด๋ฒ๋ฆฐ๋ค.
๊ทธ๋์ ๋ค์๊ณผ ๊ฐ์ด must ๋ฑ์ ์ด๋ค๋ฉด ์ ์๋ฅผ ์ ๋ ๊ฒ ๋ถ์ฌํ ๋ค์์ ๋ณด์ฌ์ฃผ์ง๋ง

ํํฐ๋ฅผ ์ด๋ค๋ฉด ์ ์๋ฅผ ์ฃผ์ง ์์ ์ฑ๋ก ๊ฑธ๋ฌ๋ฒ๋ฆฐ๋ค.

์ด๊ฑด ํนํ๋ ๊ฒ์์ ์ถ๊ฐ์กฐ๊ฑด์ ์ฃผ๋ ์ฃผ๋ ๋งค๋ฌ ๊ฒ์ด ๋ง์ ๋ ์ ์ฉํ๋ค.
๊ฒ์ ํ
์คํธ๋ก ์กฐ๊ฑด์ ๊ฑฐ๋๊ฑด ๋น์ฐํ ์ ์ฐํ๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ ํ์๊ฐ ์์ง๋ง,
๋ง 5000์ ์ดํ, 500์ ์ด์. ์ด๋ฐ ์์ผ๋ก ์ถ๊ฐ์กฐ๊ฑด์ ๊ฑฐ๋ ๊ฒ์ ์ ์๋ก๋ง ์ฒ๋ฆฌํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ์กฐ์ก์ค๋ฌ์์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฐ๊ฑด ํํฐ๋ฅผ ์ฐ๋๊ฒ ๊น๋ํ๋ค.
์ฐธ์กฐ
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html