Elasticsearch ์์ ๊ฒ์ ๊ฒฐ๊ณผ์ ๋ํด ๋ฌธ์๋ค์ ๋๋ค์ผ๋ก ์กฐํํ๋ ค๋ฉด random_score ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
random_score๋ 0๋ถํฐ 1๋ฏธ๋ง๊น์ง ๊ท ๋ฑํ๊ฒ ๋ถํฌ๋ ์ ์๋ฅผ ์์ฑํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๋ถ Lucene ๋ฌธ์์ ID๋ฅผ ๋์์ ์์ค๋ก ์ฌ์ฉํ์ฌ ๋งค์ฐ ํจ์จ์ ์ด์ง๋ง, ๋ฌธ์๊ฐ ๋ณํฉ์ ์ํด ์ฌ๋ฒํธํ(?) ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌํ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ ์๋ฅผ ์ฌํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ, seed์ field๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ต์ข ์ ์๋ seed, ํด๋น ๋ฌธ์์ field ๊ฐ ์ค ์ต์๊ฐ, ๊ทธ๋ฆฌ๊ณ ์ธ๋ฑ์ค ์ด๋ฆ๊ณผ ์ค๋ ID๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ๋ salt๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ์ฐ๋ฉ๋๋ค. ์ด ๋ฐฉ์์ผ๋ก ๊ฐ์ ๊ฐ์ด์ง๋ง ๋ค๋ฅธ ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๋ฌธ์๋ค์ ๋ค๋ฅธ ์ ์๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ๋จ, ๋์ผํ ์ค๋ ๋ด์์ ๋์ผํ field ๊ฐ์ ๊ฐ์ง ๋ฌธ์๋ค์ ๋์ผํ ์ ์๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ๋ฌธ์์ ๋ํด ๊ณ ์ ํ ๊ฐ์ด ์๋ ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก _seq_no ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ์ ํ์ผ ์ ์์ต๋๋ค. ๋จ, _seq_no ํ๋ ๊ฐ์ ๋ฌธ์๊ฐ ์ ๋ฐ์ดํธ ๋ ๋๋ง๋ค ๋ณ๊ฒฝ๋๋ฏ๋ก, ์ ์๋ ๊ทธ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
field ์ค์ ์์ด seed๋ง ์ค์ ์ด ๊ฐ๋ฅํ์ง๋ง, ์ด๋ _id ํ๋์์ fielddata๋ฅผ ๋ก๋ํด์ผ ํ๋ฏ๋ก ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ชจํ๊ฒ ๋์ด ๊ถ์ฅ๋์ง ์์ต๋๋ค.
GET /exists-tet/_search
{
"query": {
"function_score": {
"random_score": {}
}
}
}
์๋ฌด๋ฐ ํ๋๋ฅผ ์ ์ธํ์ง ์์๋ ๋ฌธ์๋ค์ ๋ํด ๋๋ค์ผ๋ก ์กฐํํฉ๋๋ค.
GET /exists-tet/_search
{
"query": {
"function_score": {
"random_score": {
"field": "_seq_no"
}
}
}
}
_seq_no ์ ํ๋๋ก ์ง์ ํ๋๋ผ๋ ๋๋ค ๋ฌธ์๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
์ฝ๋ ๋ ๋ฒจ์์๋ QueryDsl ๋ฐฉ์์ผ๋ก ์์ฑํ๊ณ ์ ํ ๋ ์์ ๊ฐ์ด seed, field๋ฅผ ์ ์ธํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
'Elasticsearch' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Elasticsearch Track total hits (1) | 2025.01.30 |
---|---|
Elasticsearch Exists ํค์๋ (0) | 2024.12.22 |
๋๊ธ