์กฐํ ๋ณต์ต๐
1.1 ์ธ๋ฑ์ค ์กฐํ
GET _cat/indices
1.2 ์ธ๋ฑ์ค ์กฐํ - ํค๋ ํฌํจ
GET _cat/indices?v
2. Document(๋ฐ์ดํฐ) ์กฐํ
1) Document ์ ๋ณด ๋ฐํ
GET address
๊ฐ์ด ์๋ ์ ๋ณด๊ฐ ๋ฐํ๋๋ค.
2) ์ ์ฒด Document ์กฐํ
GET address/_search
๊ฒ์ API๋ฅผ ์ด์ฉํ๋ฉด match_all ์ด ๊ธฐ๋ณธ๊ฐ์ด๊ธฐ์ ๋ชจ๋ ๋ํ๋จผํธ๊ฐ ์กฐํ๋๋ค.
3) ํน์ Document ์กฐํ
GET address/_doc/1
id๊ฐ 1๋ฒ์ธ document๊ฐ ์กฐํ๋๋ค.
4) ํน์ ๋ํ๋จผํธ ๋ด์ ์์๋ฐ์ดํฐ๋ง ์กฐํ
GET address/_source/1
id๊ฐ 1๋ฒ์ธ document์ ์์๋ฐ์ดํฐ๋ง ์กฐํ๋๋ค.
๋ณดํต ๋ฐ์ดํฐ๋ง ํ์ํ ๊ฒ์ด ์๋๊ธฐ์ ์ ์ฌ์ฉํ์ง ์๋๋ค.
Body Search ๊ฒ์๐
Body Search : ๊ฒ์์ ๊ด๋ จ๋ ์ฟผ๋ฆฌ๋ฅผ body์ ๋ฃ์ด ๊ฒ์ํ๋ ๊ฒ
Body Search ์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์ต์ ์ match, match_all, match_phrase ์ธ๊ฐ์ง๊ฐ ์๋ค.
1. match : ํน์ ํ ๋จ์ด ๋๋ ๋ฌธ๊ตฌ์ ์ผ์นํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
2. match_all : ์กฐ๊ฑด์์ด ํด๋น Index์ ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ๊ฒ์ํ๊ณ ๋ฐํํ๋ค.
3. match_phrase : ์ ํํ ์์๋ก ์ผ์นํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
- ๊ฒ์ ์ ๋ฐ์ดํฐ ์ถ๊ฐ
# ์๋ฌธ ๋ฐ์ดํฐ
POST my_english/_bulk
{"index":{"_id":1}}
{"message":"The quick brown fox"}
{"index":{"_id":2}}
{"message":"The quick brown fox jumps over the lazy dog"}
{"index":{"_id":3}}
{"message":"The quick brown fox jumps over the quick dog"}
{"index":{"_id":4}}
{"message":"Brown fox brown dog"}
{"index":{"_id":5}}
{"message":"Lazy jumping dog"}
# ํ๊ธ ๋ฐ์ดํฐ
POST my_korean/_bulk
{"index":{"_id":1}}
{"message":"์ง๋ถ ์์ ๊ฐ์ ๋ญ"}
{"index":{"_id":2}}
{"message":"์ง๋ถ ์์ ๊ฐ์ ๋ญ ๊ทธ๋ฆฌ๊ณ ๋ฐ์ ๊ฒ์์ ๊ฐ์์ง"}
{"index":{"_id":3}}
{"message":"์ง๋ถ ์์ ๊ฐ์ ์ฐ๋ ๋ญ ๊ทธ๋ฆฌ๊ณ ๋ฐ์ ๊ฐ์ ๊ฒ์ผ๋ฅธ ๊ฐ์์ง"}
{"index":{"_id":4}}
{"message":"๊ฐ์ ๊ฒ์ผ๋ฅธ ๋ฐ๋ณด ๊ฐ์์ง ์์ ๋นจ๊ฐ์ ๋ญ"}
{"index":{"_id":5}}
{"message":"์กธ๊ณ ์๋ ๊ฐ์ ๊ฐ์์ง"}
1. match
๊ธฐ๋ณธ ํ
GET <๋ํ๋จผํธ๋ช
>/_search
{
"query": {
"match": {
"<ํ๋๋ช
>":"<๊ฒ์์ด>"
}
}
}
ํ์ ์ค์์ ์ฌ์ ์กฐํ
GET member/_search
{
"query": {
"match": {
"gender": "f"
}
}
}
eq : ๋น๊ต์ ์ผ๋ก ๊ฐ์ ๊ฐ์ ์ฐพ๋๋ค. ์ต์ ์ ๋ณ๊ฒฝํ๋ฉด ์ฐ์๋น๊ต์ ๋ค๋ฅธ ๋น๊ต๋ฅผ ํ ์ ์๋ค.
1.2 match : ํ (Term) ๊ฒ์
๊ฐ๋จ๊ตฌ์ ์ฌ๋ ํ์ ๊ฒ์
GET member/_search
{
"query": {
"match": {
"address": "๊ฐ๋จ๊ตฌ"
}
}
}
Elasticsearch๋ Full Text Query์ ํน์ฑ์ ํ์ฉํ์ฌ ๋ถ๋ถ ๊ฒ์์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
์ด ๋ถ๋ถ ๊ฒ์์ Elasticsearch์์๋ "ํ (Term)" ๊ฒ์์ ์ง์ํ๋ค๊ณ ํ๋ค.
ํ ์ ํ ํฐ๊ณผ ๊ฐ์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋จ์ด๋ฅผ ์๋ฏธํ๋ค.
ํ ๊ฒ์์ ๊ธฐ๋ณธ์ ์ผ๋ก or ์ฐ์ฐ์ ํ๋ค.
GET member/_search
{
"query": {
"match": {
"address": "๊ฐ๋จ"
}
}
}
'๊ฐ๋จ'์ ํ ์ด ์๋๋ผ ์กฐํ๊ฐ ๋์ง์๋๋ค.
'quick' or 'dog' ๊ฒ์
GET my_english/_search
{
"query": {
"match": {
"message": "quick dog"
}
}
}
๋ ๊ฐ ์ด์์ Term ์ ๊ฒ์ํ๋ฉด ์๋์ผ๋ก or ์ฐ์ฐ์ ํ๋ค.
'๊ฐ์' or '๊ฐ์์ง' ๊ฒ์
GET my_korean/_search
{
"query": {
"match": {
"message": "๊ฐ์ ๊ฐ์์ง"
}
}
}
ํ 'and' ๊ฒ์
'operator' ์์ฑ์ผ๋ก ์ฐ์ฐ์๋ฅผ ๋ณ๊ฒฝํ๋ค.
'quick' and 'dog' ๊ฒ์
GET my_english/_search
{
"query": {
"match": {
"message": {
"query": "quick dog",
"operator": "and"
}
}
}
}
'๊ฐ์' and '๊ฐ์์ง' ๊ฒ์
GET my_korean/_search
{
"query": {
"match": {
"message": {
"query": "๊ฐ์ ๊ฐ์์ง",
"operator": "and"
}
}
}
2. match_all
์กฐ๊ฑด์์ด ํด๋น Index์ ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ๊ฒ์ํ๊ณ ๋ฐํํ๋ค.
๋ช ์์ ํํ
GET member/_search
{
"query": {
"match_all": {}
}
}
match_all ์๋ต
GET member/_search
๊ฒ์์(_search) ์ฟผ๋ฆฌ๋ฅผ ์ ์ง์์ผ๋ฉด ์๋์ผ๋ก match_all์ ์ ์ฉํ๋ค.
GET member/_search ์ query ๋ฅผ ์๋ตํด์ match_all ๋ก ๊ฒ์์ด ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด๋ค.
3. match_phrase
phrase(๊ตฌ) : ๋์ฌ ์ด์ธ์ ๋ฑ๋ง์ 2๊ฐ ์ด์์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์ฅ์ด๋ค.(ex. ๊ฐ์ ๊ฐ์์ง)
match ์์ ํ
๊ฒ์์ ํ ๋๋ 'quick dog', '๊ฐ์ ๊ฐ์์ง' ๋ or, and ๊ฒ์์ ๋ฐ๋ก๋ฐ๋ก ๊ฒฐ๊ณผ๊ฐ ๋์๋๋ฐ ์๋ ๊ทธ๋๋ก ๊ฒ์ํ๊ณ ์ํ ๋ ์ฌ์ฉํ๋ค.
๋จ์ด๋ ๋ฌธ๊ตฌ๊ฐ ์์๋๋ก ์ธ์ ํ์ฌ ๋ํ๋์ผ๋ง ๊ฒ์ ๊ฒฐ๊ณผ๋ก ๋ฐํ๋๋ค.
'quick dog' ๊ฒ์
GET my_english/_search
{
"query": {
"match_phrase": {
"message": "quick dog"
}
}
}
'๊ฐ์ ๊ฐ์์ง' ๊ฒ์
GET my_korean/_search
{
"query": {
"match_phrase": {
"message": "๊ฐ์ ๊ฐ์์ง"
}
}
}
3. match_phrase : slop ์ต์
slop์ ์ ์ฅ๋ ์ซ์๋งํผ ๋จ์ด ์ฌ์ด์ ๋ค๋ฅธ ๋จ์ด๊ฐ ๋ผ์ด๋๋ ๊ฒ์ ํ์ฉํ๋ค.
๋จ, slop์ด ๋๋ฌด ์ปค์ง๋ฉด ๊ฒ์ ๋ฒ์๊ฐ ๋์ด์ ธ์ ๊ด๋ จ์ด ๋๋ฌด ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ๋ค. ๋ณดํต 1~2์ฌ์ด๋ก ์ค์ ํ๋ค.
'lazy * dog' ๊ฒ์
GET my_english/_search
{
"query": {
"match_phrase": {
"message":{
"query": "lazy dog",
"slop": 1
}
}
}
}
lazy์ dog ๋จ์ด ์ฌ์ด์ ํ๋์ ๋จ์ด๊น์ง ํฌํจ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
'๊ฐ์ * ๊ฐ์์ง' ๊ฒ์
GET my_korean/_search
{
"query": {
"match_phrase": {
"message": {
"query": "๊ฐ์ ๊ฐ์์ง",
"slop": 1
}
}
}
}
4. Bool Query
'Bool ๋ณตํฉ Query' ๋ผ๊ณ ๋ ํ๋ค.
์ฌ๋ฌ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ ์ฉ๋๋ก, ์ฃผ๋ก ๋ ผ๋ฆฌ์ ์ธ AND, OR, NOT ์กฐ๊ฑด์ ์ ์ฉํ ๋ ์ฌ์ฉํ๋ค.
์์ ์์ค์์ Bool ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ํ์์์ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ค์ ์กฐํฉํ์ฌ ๊ฒ์์ ์ํํ๋ค.
๋ค์๊ณผ ๊ฐ์ด 4๊ฐ์ ์ธ์๋ฅผ ๊ฐ์ง๋ค.
1. must
must๋ ์ฟผ๋ฆฌ๊ฐ ์ฐธ์ธ ๋ฌธ์๋ฅผ ๋ฐํํ๋ค.
๋ ผ๋ฆฌ์ ์ธ AND ์ฐ์ฐ์ ํด๋นํ๋ฉฐ, ๋ชจ๋ ์กฐ๊ฑด์ด ๋ง์กฑ๋์ด์ผ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฌํจ๋๋ค.
2. must_not
must_not์ ์ฟผ๋ฆฌ๊ฐ ๊ฑฐ์ง์ธ ๋ฌธ์๋ฅผ ๋ฐํํ๋ค.
๋ ผ๋ฆฌ์ ์ธ NOT ์ฐ์ฐ์ ํด๋นํ๋ฉฐ, ํด๋น ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋ ๋ฌธ์๊ฐ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฌํจ๋๋ค.
3. should
should๋ ๊ฒ์ ๊ฒฐ๊ณผ ์ค ํด๋น ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ์ ์๋ฅผ ๋์ธ๋ค.
๋ ผ๋ฆฌ์ ์ธ OR ์ฐ์ฐ์ ํด๋นํ๋ฉฐ, ์กฐ๊ฑด ์ค ํ๋ ์ด์์ ๋ง์กฑํ๋ ๋ฌธ์๋ฅผ ๋ฐํํ๋ค.
4. filter
filter๋ ์ฟผ๋ฆฌ๊ฐ ์ฐธ์ธ ๋ฌธ์๋ฅผ ๋ฐํํ์ง๋ง, ์ ์๋ฅผ ๊ณ์ฐํ์ง ์์ must๋ณด๋ค ๊ฒ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
๋ ผ๋ฆฌ์ ์ธ AND ์ฐ์ฐ์ ํด๋นํ๋ฉฐ, ๋ชจ๋ ์กฐ๊ฑด์ด ๋ง์กฑ๋์ด์ผ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฌํจ๋๋ค.
๊ธฐ๋ณธ ํ
GET <์ธ๋ฑ์ค๋ช
>/_search
{
"query": {
"bool": {
"must": [
{์ฟผ๋ฆฌ},{์ฟผ๋ฆฌ},....
],
"must_not": [
{์ฟผ๋ฆฌ},{์ฟผ๋ฆฌ},....
],
"should": [
{์ฟผ๋ฆฌ},{์ฟผ๋ฆฌ},....
],
"filter": [
{์ฟผ๋ฆฌ},{์ฟผ๋ฆฌ},....
],
}
}
}
1. must
๊ฒ์ : '์ง๋ถ' and '๊ฐ์ ๋ญ'
- match ๋ก ๊ฒ์ํ์ ๋
GET my_korean/_search
{
"query": {
"match": {
"message": {
"query": "์ง๋ถ ๊ฐ์ ๋ญ",
"operator": "and"
}
}
}
}
match ๋ก๋ง ๊ฒ์ํ์ ๋, ์ง๋ถ & ๊ฐ์ & ๋ญ ์กฐํฉ์ผ๋ก ๊ฒ์๋์๋ค.
์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ์กฐํฉํ์ฌ ๊ฒ์ํ๊ณ ์ถ์ ๋๋ bool ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
- must ์ผ๋ก ๊ฒ์ํ์ ๋
GET my_korean/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"message": "์ง๋ถ"
}
},
{
"match_phrase": {
"message": "๊ฐ์ ๋ญ"
}
}
]
}
}
}
2. must_not
๊ฒ์ : 'quick'๊ณผ 'lazy dog'์ด ๋ชจ๋ ํฌํจ๋์ง ์์ ๋ฌธ์
GET my_english/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"message": "quick"
}
},
{
"match_phrase": {
"message": {
"query": "lazy dog",
"slop": 1
}
}
}
]
}
}
}
must + must_not ์กฐํฉ
#๊ฒ์ : '์ง๋ถ' ํค์๋๊ฐ ์๊ณ '๋ฐ๋ณด'๊ฐ ํฌํจ๋ ๊ธ
GET my_korean/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"message": "์ง๋ถ"
}
}
],
"must": [
{
"match": {
"message": "๋ฐ๋ณด"
}
}
]
}
}
}
๊ฒ์: '๊ฐ๋จ' ์๋ ๊ณณ์ ๊ฑฐ์ฃผํ๋ ๋จ์ํ์
GET member/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"gender": "m"
}
}
],
"must_not": [
{
"match": {
"address": "๊ฐ๋จ๊ตฌ"
}
}
]
}
}
}