반응형
1. 기본 검색 쿼리: match
- match 쿼리는 기본적으로 필드에서 단어를 검색하는데 사용. 특정 필드의 텍스트 검색
{
"query": {
"match": {
"field_name": "search text"
}
}
}
2. 다중 필드 검색: multi_match
- 여러 필드에서 같은 검색어를 찾고자 할 때 multi_match를 사용
- fields에 가중치 추가 가능
{
"query": {
"multi_match": {
"query": "search text",
"fields": ["field1", "field2^2"]
}
}
}
3. 필터 쿼리: bool
- bool 쿼리는 must, should, must_not 조건을 통해 복잡한 논리 검색이 가능
{
"query": {
"bool": {
"must": [
{ "match": { "field1": "value1" }},
{ "range": { "field2": { "gte": 10, "lte": 20 }}}
],
"must_not": [
{ "match": { "field3": "unwanted_value" }}
],
"should": [
{ "match": { "field4": "optional_value" }}
]
}
}
}
4. 집계 쿼리: aggregations
- 집계 쿼리는 데이터 분석에 사용되며, terms, avg, min, max 등 다양한 집계 옵션을 제공
{
"aggs": {
"field_terms": {
"terms": { "field": "field_name" }
},
"average_value": {
"avg": { "field": "numeric_field" }
}
}
}
5. 정렬: sort
- 검색 결과를 특정 필드를 기준으로 정렬할 때 사용
{
"query": {
"match_all": {}
},
"sort": [
{ "field_name": { "order": "asc" }}
]
}
6. 페이지네이션: from과 size
- 검색 결과의 페이지를 지정하고 결과 개수를 조정
{
"query": {
"match_all": {}
},
"from": 0,
"size": 10
}
7. Match Phrase Query
- match_phrase는 주어진 문구와 정확히 일치하는 구문 검색을 수행합니다. 연속된 단어를 포함한 검색이 필요한 경우에 유용합니다.
{
"query": {
"match_phrase": {
"field_name": "exact phrase search"
}
}
}
8. Range Query
- 특정 범위 내 값을 찾고자 할 때 사용합니다. 날짜나 숫자 필드에 유용합니다.
{
"query": {
"range": {
"numeric_field": {
"gte": 10,
"lte": 100
}
}
}
}
9. Term Query
- 정확히 일치하는 값을 찾을 때 사용합니다. 단어나 키워드의 특정 값이 필요할 때 사용하며, 토큰화(tokenization) 없이 정확한 값을 찾습니다.
{
"query": {
"term": {
"field_name": "exact_value"
}
}
}
10. Wildcard Query
- 부분 일치와 패턴 검색을 위해 *와 ?를 사용하여 특정 패턴에 따라 검색합니다. 성능에 영향을 미칠 수 있으므로 제한적으로 사용합니다.
{
"query": {
"wildcard": {
"field_name": "start*end"
}
}
}
11. Exists Query
- 특정 필드가 존재하는 문서만 조회하는 경우 사용합니다.
{
"query": {
"exists": {
"field": "field_name"
}
}
}
12. Nested Query
- 중첩된 객체 필드를 검색할 때 사용합니다. OpenSearch는 nested 타입 필드를 별도의 서브 도큐먼트로 관리하므로 nested 쿼리를 사용해야 정확한 매칭이 가능합니다.
{
"query": {
"nested": {
"path": "nested_field",
"query": {
"bool": {
"must": [
{ "match": { "nested_field.sub_field": "value" }}
]
}
}
}
}
}
13. Function Score Query
- 필드 값이나 특정 조건에 따라 점수를 가중치로 주어 정렬할 때 사용합니다. 예를 들어 최근 날짜의 문서에 더 높은 점수를 주는 경우 유용합니다.
{
"query": {
"function_score": {
"query": { "match": { "field_name": "search text" }},
"functions": [
{
"gauss": {
"date_field": {
"origin": "now",
"scale": "10d",
"offset": "5d",
"decay": 0.5
}
}
}
],
"boost_mode": "multiply"
}
}
}
14. Highlighting
- 검색어에 일치하는 텍스트를 하이라이트하여 보여줍니다.
{
"query": {
"match": {
"field_name": "highlight this text"
}
},
"highlight": {
"fields": {
"field_name": {}
}
}
}
15. Scripted Fields
- 스크립트를 사용해 계산된 필드를 생성할 수 있습니다. 특정 조건에 따라 필드를 계산하여 결과에 추가하는 경우 유용합니다.
{
"query": {
"match_all": {}
},
"script_fields": {
"computed_field": {
"script": {
"source": "doc['numeric_field'].value * 2"
}
}
}
}
반응형