Bool query : 여러 쿼리를 조합하여 사용 가능
- must : 쿼리가 참인 문서들을 검색
- must_not : 쿼리가 거짓인 문서들을 검색
- should : 검색 결과 중 이 쿼리에 해당하는 문서들의 score를 높여줌
- filter : 쿼리가 참인 문서를 검색하지만, score를 계산하지 않음 must보다 검색 속도가 빠르다
[사용법]
GET 인덱스명/_search
{
"query":{
"bool":{
"must":[
{ 쿼리 }, ...
],
"must_not":[
{ 쿼리 }, ...
],
"should":[
{ 쿼리 }, ...
],
"filter":[
{ 쿼리 }, ...
]
}
}
}
EX01 ) 조건 - 팀이 jazz 이고, golden states 가 참인 것 ( 둘 다 참인 것 )
golden states는 붙어있고, jazz는 들어가 있기만 하면 됨.
GET basketball/_search
{
"query":{
"bool":{
"must": [
{"match" : {"team" : "jazz"}},
{"match_phrase" : {"team" : "Golden States"}}
]
}
}
}
EX02) 조건 - Golden States 사이에 1개 단어가 들어오는 것은 허용
GET basketball/_search
{
"query":{
"bool":{
"must": [
{"match": {"team":"Jazz"}},
{"match_phrase":{
"team": {
"query" : "Golden States",
"slop":1
}
}
}
]
}
}
}
EX03) 조건 - Jazz 있고, Golden States 없음
GET basketball/_search
{
"query":{
"bool":{
"must": [
{"match": {"team":"Jazz"}}
],
"must_not": [
{"match_phrase": {"team" : "Golden States"}}
]
}
}
}
EX04) should : 검색 점수 조정을 위해 사용 ( 가중치를 주어 상위로 올리기 )
GET basketball/_search
{
"query":{
"bool":{
"must":[{
"match":{"team":"jazz"}
}],
"should":[{
"match":{"team":"Golden"}
}]
}
}
}
EX05) filter : score에 영향을 주지 않고 검색 -> jazz로만 검색한 것과 같은 score를 가짐
GET basketball/_search
{
"query":{
"bool":{
"must":[
{
"match":{"team":"jazz"}
}],
"filter":[
{
"match":{"team":"Golden"}
}
]
}
}
}
Range query : 숫자나 날짜 형식의 범위를 검색
- gte : ~ 이상
- gt : ~ 초과
- lte : ~ 이하
- lt : ~ 미만
EX01) points가 10~19 사이 검색
GET basketball/_search
{
"query":{
"range":{
"points":{
"gte":10,
"lt":20
}
}
}
}
EX02) submit_date에서 2023년도 사이 검색
GET basketball/_search
{
"query":{
"range":{
"submit_date":{
"gte" : "2023-01-01",
"lte" : "2023-12-31"
}
}
}
}
'ELASTICSEARCH' 카테고리의 다른 글
[엘라스틱서치] 6. 한글 형태소, mapping (0) | 2024.03.13 |
---|---|
[엘라스틱서치] 5. 데이터 색인, 사용자 정의 토큰 필터 (0) | 2024.03.13 |
[엘라스틱서치] 3. 데이터 조건에 따라 검색하기 (0) | 2024.03.11 |
[엘라스틱서치] 2. 데이터 추가하기 (0) | 2024.03.11 |
[엘라스틱서치] 1. 개념 및 설치 (0) | 2024.03.11 |