Term 쿼리
Term 쿼리
필드에서 정확한 용어를 검색하려면 term 쿼리를 사용해요. term 쿼리는 분석되지 않은 용어를 그대로 일치시키므로 keyword 필드에서 주로 사용해요.
출처: 문서
본문
필드에서 정확한 용어를 검색하려면 term 쿼리를 사용해요. 예를 들어 다음 쿼리는 정확한 줄 번호를 가진 행을 검색해요:
GET shakespeare/_search
{
"query": {
"term": {
"line_id": {
"value": "61809"
}
}
}
}
문서가 인덱싱될 때 텍스트 필드는 분석돼요. 분석에는 텍스트를 토큰화하고 소문자로 바꾸며 구두점을 제거하는 과정이 포함돼요. 쿼리 텍스트를 분석하는 match 쿼리와 달리, term 쿼리는 정확한 용어만 일치시키므로 관련성 있는 결과를 반환하지 못할 수 있어요. 텍스트 필드에서는 term 쿼리 사용을 피하세요. 자세한 내용은 Term-level and full-text queries compared를 참고하세요. case_insensitive 파라미터에서 쿼리가 대소문자를 구분하지 않도록 지정할 수 있어요:
GET shakespeare/_search
{
"query": {
"term": {
"speaker": {
"value": "HAMLET",
"case_insensitive": true
}
}
}
}
OpenSearch 2.x 및 이전 버전에서는 문자의 수에 따라 복잡도가 기하급수적으로 증가해 높은 힙 메모리 사용과 성능 저하를 일으킬 수 있어요. 이를 피하려면 대소문자를 구분하지 않는 검색을 사용하지 마세요. 대신 인덱싱된 필드의 analyzer에 소문자 토큰 필터를 적용하고 소문자 쿼리 용어를 사용하세요. 응답에는 대소문자 차이가 있음에도 일치하는 문서가 포함돼요:
"hits": {
"total": {
"value": 1582,
"relation": "eq"
},
"max_score": 2,
"hits": [
{
"_index": "shakespeare",
"_id": "32700",
"_score": 2,
"_source": {
"type": "line",
"line_id": 32701,
"play_name": "Hamlet",
"speech_number": 9,
"line_number": "1.2.66",
"speaker": "HAMLET",
"text_entry": "[Aside] A little more than kin, and less than kind."
}
},
...
}
파라미터 (Parameters)
쿼리는 필드 이름(
GET _search
{
"query": {
"term": {
"": {
"value": "sample",
...
}
}
}
}
value | 문자열(String) | boost | 부동 소수점(Floating-point) | 이 필드가 관련성 점수에 기여하는 가중치를 지정하는 부동 소수점 값이에요. 1.0보다 큰 값은 필드의 관련성을 높이고, 0.0과 1.0 사이의 값은 관련성을 낮춰요. 기본값은 1.0이에요.
_name | 문자열(String) | 쿼리 태깅(query tagging)을 위한 쿼리 이름이에요. 선택이에요.
case_insensitive | 불리언(Boolean) | true이면 value가 인덱싱된 필드 값과 대소문자를 구분하지 않고 일치하도록 허용해요. 기본값은 false예요(대소문자 구분은 필드의 매핑에 따라 결정돼요).