Wildcard 쿼리
Wildcard 쿼리
와일드카드 패턴과 일치하는 용어를 검색하려면 wildcard 쿼리를 사용해요. 와일드카드 쿼리는 *와 ? 연산자를 지원해요.
출처: 문서
본문
와일드카드 패턴과 일치하는 용어를 검색하려면 wildcard 쿼리를 사용해요. wildcard 쿼리는 다음 연산자를 지원해요.
Operator Description
* | 0개 이상의 문자와 일치해요.
? | 임의의 단일 문자 하나와 일치해요.
case_insensitive | true이면 wildcard 쿼리는 대소문자를 구분하지 않아요. false이면 대소문자를 구분해요. 기본값은 false(대소문자 구분)예요.
H로 시작하고 Y로 끝나는 용어에 대한 대소문자 구분 검색은 다음 요청을 사용하세요:
GET shakespeare/_search
{
"query": {
"wildcard": {
"speaker": {
"value": "H*Y",
"case_insensitive": false
}
}
}
}
*를 ?로 바꾸면 일치 항목이 나오지 않아요. ?는 단일 문자를 의미하기 때문이에요. wildcard 쿼리는 많은 용어를 반복해야 하므로 느린 경향이 있어요. 쿼리 시작 부분에 와일드카드 문자를 두지 마세요. 리소스와 시간 측면 모두에서 매우 비용이 많이 드는 작업이 될 수 있기 때문이에요. wildcard 필드 타입은 와일드카드 및 정규식 쿼리에 매우 효율적이도록 특별히 설계된 인덱스를 구성해요.
파라미터 (Parameters)
쿼리는 필드 이름(
GET _search
{
"query": {
"wildcard": {
"": {
"value": "patt*rn",
...
}
}
}
}
value | 문자열(String) | boost | 부동 소수점(Floating-point) | 이 필드가 관련성 점수에 기여하는 가중치를 지정하는 부동 소수점 값이에요. 1.0보다 큰 값은 필드의 관련성을 높이고, 0.0과 1.0 사이의 값은 관련성을 낮춰요. 기본값은 1.0이에요.
case_insensitive | 불리언(Boolean) | true이면 value가 인덱싱된 필드 값과 대소문자를 구분하지 않고 일치하도록 허용해요. 기본값은 false예요(대소문자 구분은 필드의 매핑에 따라 결정돼요).
rewrite | 문자열(String) | OpenSearch가 다중 용어 쿼리를 어떻게 다시 작성하고 점수를 매기는지 결정해요. 유효한 값은 constant_score, scoring_boolean, constant_score_boolean, top_terms_N, top_terms_boost_N, top_terms_blended_freqs_N이에요. 기본값은 constant_score예요.
search.allow_expensive_queries가 false로 설정되어 있으면 wildcard 쿼리는 실행되지 않아요.