Elasticsearch painless HTML 태그 제거

JunMyung Lee·2024년 9월 5일
0

Elasticsearch

목록 보기
41/41

Elasticsearch 7.13.2 버전 기준, painless에서 HTML 태그를 제거하려고 replaceAll을 사용했는데 다음과 같이 에러가 나면서 지원을 하지 않는다.

Unhandled Exception class_cast_exception

Cannot cast java.lang.String to java.util.function.Function

Stack:
[
  "java.base/java.lang.Class.cast(Class.java:3818)",
  "ctx.content.replaceAll(\"<[^>]+>\", \"\");\n\n\n",
  "           ^---- HERE"
]

replace는 지원을 하는데 정규식을 작성할 수 없으니 직접 loop하며 지워야 한다.

Dev Tools Painless Lab

painless 코드를 테스트할 수 있는 Dev Tool의 Painless Lab에서 진행한다.

Parameters

Code

def ctx = params.ctx;

String openTag = "<";
String closeTag = ">";
String content = ctx.content;

while (content.contains(openTag) && content.contains(closeTag)) {
    int start = content.indexOf(openTag);
    int end = content.indexOf(closeTag, start) + 1;
    if (end > start) {
        content = content.substring(0, start) + content.substring(end);
    } else {
        break;
    }
}


ctx.put('content', content);

return ctx;

Output

profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글