Elasticsearch의 must(and)와 should(or) 쉽게 이해하기
일상 생활에서의 must와 should
you must study
you must study
라는 문장은 "너 공부 안하면 디질 줄 알아 무조건 해!!"
라는 느낌이 있습니다.
듣는 입장에서는 "안하면 죽겠구나 해야겠다"
라고 생각될 수 있고
you should study
you should study
라는 문장은 "너 공부 좀 해야 해"
라는 느낌이고
듣는 입장에서는 "귀찮은데 할까 말까"
라는 생각이 듭니다.
위 내용이 elasticsearch 그대로 반영됩니다.
must query
{
"query": {
"bool": {
"must": [
{ "match": { "field1": "value1" }},
{ "match": { "field2": "value2" }}
]
}
}
}
무조건 주어진 조건이 일치해야 하며, 일치 안하면 디져!
느낌의 쿼리입니다
그렇기 때문에 두 조건에 대해서 AND
로 성립합니다.
should query
{
"query": {
"bool": {
"should": [
{ "match": { "field1": "value1" }},
{ "match": { "field2": "value2" }}
]
}
}
}
약간 풀어주는 느낌입니다 일치 해야 돼
라는 뉘앙스라
듣는(elasticsearch) 입장 에서는 에이~ 둘다 하기 힘든데 하나만 하자
로 인식될 수 있습니다.
그렇기 때문에 두 조건에 대해서 하나만 일치해도 되는 OR
이 성립합니다.