背景
在工作中直接使用向ES发送http请求的方式来获取结果,一般请求体中所用的参数来自于用户输入,那么里面可能包含英文双引号、反斜杠特殊字符,所以我们对这种特殊情况进行处理
http请求体如下所示,目前的情况是关键词 中国 中可能含有上面的特殊字符,所以我们在发送http请求之前,需要先进行处理
{
"query": {
"term": {
"normalTitle": "中国"
}
},
"_source": ["title", "website", "normalTitle", "titleMeaning"]
}
解决办法
将英文双引号、反斜杠转义即可,方法如下:
public static String dealSpecialCharacter(String str) {
if (StringUtils.isBlank(str)) {
return str;
}
str = str.replace("\\", "\\\\");
str = str.replace("\"", "\\\"");
return str;
}