Elasticsearch query string 조회시 parse exception 에러 처리

elasticsearch에서 query_string로 데이터 조회시에 쿼리문으로 ) 특수문자가 포함하여 조회했다. 하지만 다음과 같이 문제가 발생했다.


1
2
3
4
5
6
7
8
9
10
11
{
  "error": {
    "root_cause": [
      {
        "type": "parse_exception",
        "reason": "parse_exception: Encountered \" \")\" \") \"\" at line 1, column 11.\nWas expecting one of:\n    <EOF> \n    <AND> ...\n    <OR> ...\n    <NOT> ...\n    \"+\" ...\n    \"-\" ...\n    <BAREOPER> ...\n    \"(\" ...\n    \"*\" ...\n    \"^\" ...\n    <QUOTED> ...\n    <TERM> ...\n    <FUZZY_SLOP> ...\n    <PREFIXTERM> ...\n    <WILDTERM> ...\n    <REGEXPTERM> ...\n    \"[\" ...\n    \"{\" ...\n    <NUMBER> ...\n    "
      }
    ],
    "type": "search_phase_execution_exception",
    "reason": "all shards failed",
    "phase": "query",
cs


확인해보니 + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ / 포함된 문장을 query_string 통해서 조회하려고 하면 에러를 발생시킨다. 그래서 이를 해결하기 위해서 위에 reserved character들이 들어간 단어는 \\를 붙여주어야 한다.


이를 위한 자바스크립트는 다음과 같다.

1
2
3
async escapeReservedCharacter(query) {
  return query.replace(/([!*+&|()<>[\]{}^~?:\-="/\\])/g, '\\$1');
}
cs


이를 해결해서 query_string을 사용하면 문제가 해결된다.


참고 : https://stackoverflow.com/questions/26431958/escaping-lucene-characters-using-javascript-regex




댓글()

Mybatis에서 쿼리 작성 시 부등호 사용하면 발생하는 Error 수정

web/Spring|2018. 6. 12. 13:36

Mybatis에서 사용하는 쿼리중에 < > 와 같은 부등호가 들어가게 되면 에러가 발생한다.


[에러내용]

"The content of elements must consist of well-formed character data or markup."


이를 해결하기 위해서는 부등호를 사용하는 쿼리는 

<![CDATA[ ]]>을 감싸주어야 한다.


1
2
3
4
5
6
7
8
9
10
<select id="test resulttype="dto">
<![CDATA[
SELECT
    jumin
FROM
    member
WHERE 
    id > 1
]]>
</select>
cs


댓글()

JSP 2.0에서의 문자셋 지정 방식

web/Web|2016. 12. 22. 12:02

JSP 2.0에서의 문자셋 지정 방식


 Web.xml 파일에서 정의 : 특정 서버 단위로 URL별로 인코딩을 설정하므로 작성한 소스를 다른 서버에서 실행할 경우 한글이 깨질 수 있음

 각 JSP 파일의 page 지시어에 pageEncoding 속성에서 정의 : 페이지 단위의 설정이므로 애플리케이션 설정과 무관하게 한글처리가 가능하다. 단 서버가 JSP2.0 스펙을 지원하지 않을 경우 한글이 깨질 수 있음

 각 JSP 파일의 page 지시어에 contentType 속성에서 정의 : 이전 스펙을 준수하므로 모든 서버 환경에서도 한글이 깨지지 않는다.


-> 따라서, 권장사항은 pageEncodiung과 contentType을 모두 사용하는 것이다.

'web > Web' 카테고리의 다른 글

Get과 Post 방식의 차이점 설명  (0) 2016.12.22
자바 빈즈 개념 설명(Java Beans)  (0) 2016.12.22
JSP 개념 설명  (0) 2016.12.22
아파치와 톰캣의 차이  (0) 2016.12.22
jsp 기본 문법 설명  (0) 2016.12.22
JSP 2.0에서의 문자셋 지정 방식  (0) 2016.12.22

댓글()