원하는 조건에 따라 검색이 가능하다.
먼저 이름이 park인 데이터를 조회하고, 이름이 park이면서 나이가 22인 데이터를 조회해본다.
- term : 정확히 일치한 것 검색 ( 숫자 )
⇒ 문자는 검색이 안될 수도 있다. ( 파싱한 값에 따라 달라지므로 잘 사용하지 않음 )
GET basketball/_search
{
"query" : {
"term" : {
"points":32
}
}
}
- match : 단어가 포함되어 있으면 검색 ( 대/소문자 상관없음 )
GET basketball/_search
{
"query" : {
"match" : {
"team":"States"
}
}
}
+ match에서 공백은 or를 의미한다.
GET basketball/_search
{
"query" : {
"match" : {
"team":"states jazz"
}
}
}
+ match에서 and로 검색 : 공백 중간이나 앞, 뒤에 다른 단어가 와도 된다. ( 중간에 다른 단어가 끼어 있음 )
GET basketball/_search
{
"query" : {
"match" : {
"team":{
"query" : "states jazz",
"operator" : "and"
}
}
}
}
+ match_phrase : 제시한 검색어는 정확히 일치, 앞이나 뒤에 다른 단어가 와도 된다. ( 중간에 다른 단어가 끼지 않음 )
GET basketball/_search
{
"query" : {
"match_phrase" : {
"team": "States Warriors"
}
}
}
+ slop 옵션 : 값의 공백 사이의 단어가 n개 이하의 단어가 들어와도 됨
GET basketball/_search
{
"query" : {
"match_phrase" : {
"team": {
"query":"States Warriors",
"slop":1
}
}
}
}
=> 0개, 1개까지는 들어와도 된다. 2개는 안됨
+ query_string : 여러 개의 검색 조건
GET basketball/_search{
"query":{
"query_string":{
"default_field":"team",
"query": "(Golden AND jazz) OR \"Golden Warriors\""
}
}
}
+ Bool query : 여러 쿼리를 조합하여 사용 가능, 4개의 인자를 가지고 있음
- must : 쿼리가 참인 문서들을 검색
- must_not : 쿼리가 거짓인 문서들을 검색
- should : 검색 결과 중 이 쿼리에 해당하는 문서들의 score를 높여줌
- filter : 쿼리가 참인 문서를 검색하지만, score를 계산하지 않음 must보다 검색 속도가 빠르다
[사용법]
GET 인덱스명/_search
{
"query":{
"bool":{
"must":[
{ 쿼리 }, ...
],
"must_not":[
{ 쿼리 }, ...
],
"should":[
{ 쿼리 }, ...
],
"filter":[
{ 쿼리 }, ...
]
}
}
}
[예시01]
조건 - 팀이 jazz 이고, golden states 가 참인 것 ( 둘 다 참 ) golden states는 붙어있고, jazz는 들어가 있기만 하면 된다.
GET basketball/_search
{
"query":{
"bool":{
"must": [
{"match" : {"team" : "jazz"}},
{"match_phrase" : {"team" : "Golden States"}}
]
}
}
}
'ELASTICSEARCH' 카테고리의 다른 글
[엘라스틱서치] 6. 한글 형태소, mapping (0) | 2024.03.13 |
---|---|
[엘라스틱서치] 5. 데이터 색인, 사용자 정의 토큰 필터 (0) | 2024.03.13 |
[엘라스틱서치] 4. Bool query, Range query (0) | 2024.03.13 |
[엘라스틱서치] 2. 데이터 추가하기 (0) | 2024.03.11 |
[엘라스틱서치] 1. 개념 및 설치 (0) | 2024.03.11 |