키워드 기반 쿼리(Match Query)
일치 쿼리는 특정 키워드가 포함된 문서를 검색하는 데 사용됩니다. 해당 키워드가 하나 이상 있는 문서를 반환합니다.
laptop
예: 에 키워드가 포함된 이름을 가진 제품을 찾습니다 products Index
.
GET /products/_search
{
"query": {
"match": {
"name": "laptop"
}
}
}
모든 키워드를 포함해야 함(Match Phrase Query)
Match Phrase 쿼리를 사용하려면 쿼리의 모든 키워드가 문서 텍스트 내에서 올바른 순서로 연속적으로 나타나야 합니다.
예: 문구가 포함된 설명이 있는 제품을 찾습니다 HP laptop
.
GET /products/_search
{
"query": {
"match_phrase": {
"description": "HP laptop"
}
}
}
전체 구문 접두사를 포함해야 합니다.(Match Phrase Prefix Query)
Match Phrase Prefix 쿼리는 Match Phrase과 유사하지만 마지막 키워드의 부분 일치를 허용합니다.
예: 로 시작하는 설명이 있는 제품을 찾습니다 laptop
.
GET /products/_search
{
"query": {
"match_phrase_prefix": {
"description": "laptop"
}
}
}
용어 기반 쿼리(Term Query)
용어 쿼리는 지정된 정확한 값을 갖는 필드가 있는 문서를 검색하는 데 사용됩니다.
예: category
값이 있는 필드가 있는 제품을 찾습니다 laptop
.
GET /products/_search
{
"query": {
"term": {
"category": "laptop"
}
}
}
범위 기반 쿼리(Range Query)
범위 쿼리는 지정된 범위 내의 필드 값이 있는 문서를 검색하는 데 도움이 됩니다.
예: 가격이 500에서 1000 사이인 제품을 찾습니다.
GET /products/_search
{
"query": {
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
}
용어 수준 쿼리
용어 수준 쿼리를 사용하면 Exact, Prefix, Range, Wildcard 및 Fuzzy 쿼리와 같은 특정 조건을 기반으로 문서를 검색할 수 있습니다.
예: 이름이 laptop
500에서 1000 사이이고 가격이 500에서 1000 사이인 제품을 찾습니다.
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"prefix": {
"name": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
Full-Text 질문
Full-Text 쿼리를 사용하면 텍스트 분석 알고리즘을 사용하여 텍스트 필드를 검색하여 유사한 단어나 동의어를 찾을 수 있습니다.
computer
예: 또는 가 포함된 설명이 있는 제품을 찾습니다 laptop
.
GET /products/_search
{
"query": {
"match": {
"description": "computer laptop"
}
}
}
부울 쿼리
Boolean
쿼리는 정확한 검색 결과를 얻기 위해 모두 포함해야 함, 적어도 하나를 포함해야 함 또는 포함하지 않아야 함과 같은 다양한 검색 조건과 여러 하위 쿼리를 결합할 수 있습니다.
예: category
존재 laptop
및 가격이 500에서 1000 사이인 제품을 찾습니다.
GET /products/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"category": "laptop"
}
},
{
"range": {
"price": {
"gte": 500,
"lte": 1000
}
}
}
]
}
}
}
Elasticsearch 다음은 각 쿼리 유형에 대한 예시와 함께 의 기본 검색 쿼리입니다. 를 사용할 때 Elasticsearch 이러한 쿼리를 결합하여 유연하고 효율적으로 데이터를 검색할 수 있습니다.