연습용 데이터 생성
my_index라는 인덱스를 연습용으로 사용해 보도록 하겠습니다.
my_index가 존재하는 경우 먼저 인덱스 삭제부터 진행하도록 하겠습니다.
DELETE my_index
my_index에 5개의 field를 넣어주고 각각의 field에는 message 값이 있는 데이터를 넣어줍니다.
POST my_index/_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"}
match_all (모두 가져오기)
match_all 은 별다른 조건 없이 해당 인덱스의 모든 도큐먼트를 검색하는 쿼리입니다.
검색 시 쿼리를 넣지 않으면 elasticsearch는 자동으로 match_all을 적용해서 해당 인덱스의 모든 도큐먼트를 검색합니다.
GET my_index/_search
즉 아래 커맨드와 동일한 것입니다.
GET my_index/_search
{
"query": {
"match": {
"message": "dog"
}
}
}
match
가장 일반적으로 사용되는 query입니다.
message에 dog이 포함된 데이터를 가지고 옵니다.
// 4개의 결과를 return 받을 수 있습니다.
GET my_index/_search
{
"query": {
"match": {
"message": "dog"
}
}
}
or 조건 (default)
match 검색 조건은 기본적으로 or 조건이 적용됩니다.
아래 커맨드를 사용하면 message에 quick 또는 dog 이라는 단어가 포함된 데이터를 가지고 옵니다.
// 5개의 결과를 return 받을 수 있습니다.
GET my_index/_search
{
"query": {
"match": {
"message": "quick dog"
}
}
}
and 조건
검색 조건을 AND로 바꾸려면 operator 옵션을 사용하면 됩니다.
이 경우 문법이 조금 달라지는데,
<필드명>:<검색어> 형식으로 하던 것을
<필드명>: { "query":<검색어>, "operator": }
로 변경해 줘야 합니다.
아래 명령어는 quick과 dog라는 단어가 둘다 들어가 있는 데이터를 가지고 옵니다.
GET my_index/_search
{
"query": {
"match": {
"message": {
"query": "quick dog",
"operator": "and"
}
}
}
}
Match_pharase
완전 동일한 문장을 검색합니다.
"lazy dog" 과 완전 동일한 문장이 들어간 데이터를 가지고 옵니다.
1개의 결과가 return 되는 것을 볼 수 있습니다.
GET my_index/_search
{
"query": {
"match_phrase": {
"message": "lazy dog"
}
}
}
Match_pharase - slop
slop이라는 option 추가할 수 있습니다.
lazy dog 사이에 한개의 단어가 더 들어있는 경우도 같이 검색합니다.
2개의 결과가 return 되는 것을 볼 수 있습니다.
GET my_index/_search
{
"query": {
"match_phrase": {
"message": {
"query": "lazy dog",
"slop": 1
}
}
}
}
query_string
GET my_index/_search
{
"query": {
"query_string": {
"default_field": "message",
"query": "(jumping AND lazy) OR \"quick dog\""
}
}
}
'공부방 > Elasticsearch' 카테고리의 다른 글
복합 쿼리 - Bool Query (0) | 2023.05.10 |
---|---|
정확도 - Relevancy (Score 책정) (0) | 2023.05.10 |
CRUD - 입력, 조회, 수정, 삭제 (0) | 2023.05.10 |
인덱스와 샤드 (0) | 2023.05.10 |
pm2를 이용한 데몬 실행 (0) | 2023.05.09 |