반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

[es] Regexp Query 본문

ElasticStack/Elasticsearch

[es] Regexp Query

닉의네임 2023. 8. 16. 13:51
반응형

정규식 쿼리

쿼리구조는 아래와 같고

GET /_search
{
  "query": {
    "regexp": {
      "user.id": {
        "value": "k.*y",
        "flags": "ALL",
        "case_insensitive": true,
        "max_determinized_states": 10000,
        "rewrite": "constant_score"
      }
    }
  }
}

옵션값 설명

<field>(필수, object) 검색하고자 하는 필드입니다.

 

value

(필수, 문자열) 제공된 에서 찾으려는 용어에 대한 정규식입니다 <field>. 지원되는 연산자 목록은 정규식 구문 을 참조하십시오 .

기본적으로 정규식은 1,000자로 제한됩니다. 설정 을 사용하여 이 제한을 변경할 수 있습니다 index.max_regex_length .

쿼리 성능은 regexp제공된 정규식에 따라 달라질 수 있습니다. 성능을 향상시키려면 접두사 또는 접미사 없이 .*또는 와 같은 와일드카드 패턴을 사용하지 마십시오 ..*?+

flags(선택 사항, 문자열) 정규식에 대한 선택적 연산자를 활성화합니다. 유효한 값 및 자세한 내용은 정규식 구문을 참조하십시오

 

.case_insensitive7.10.0에 추가되었습니다.(선택 사항, 부울) true로 설정된 경우 정규식 값과 인덱싱된 필드 값의 대/소문자를 구분하지 않는 일치를 허용합니다. 기본값은 일치의 대소문자 구분이 기본 필드의 매핑에 따라 달라지는 것을 의미하는 false입니다

 

.max_determinized_states

(선택 사항, 정수) 쿼리에 필요한 최대 자동화 상태 수입니다. 기본값은 입니다 10000.

 

Elasticsearch는 내부적으로 Apache Lucene을 사용하여 정규식을 구문 분석합니다.

Lucene은 각 정규식을 여러 결정된 상태를 포함하는 유한 자동 장치로 변환합니다.

 

이 매개변수를 사용하여 해당 변환이 의도치 않게 너무 많은 리소스를 소비하는 것을 방지할 수 있습니다. 복잡한 정규식을 실행하려면 이 제한을 늘려야 할 수 있습니다.

 

rewrite(선택 사항, 문자열) 쿼리를 다시 작성하는 데 사용되는 메서드입니다. 유효한 값 및 자세한 내용은 rewrite매개변수를 참조하십시오 .

 

 

비용이 많이 드는 쿼리 허용

search.allow_expensive_queries 가 false로 설정된 경우 Regexp 쿼리가 실행되지 않습니다 .

반응형

'ElasticStack > Elasticsearch' 카테고리의 다른 글

[es] elasticsearch 성능개선 (elasticsearch cache)  (0) 2023.09.25
[es] script query  (2) 2023.09.01
[es] collapse  (0) 2023.07.13
[es] 재현율 개선  (0) 2023.06.20
신조어 추천  (0) 2023.06.05
Comments