java - 如何在JAVA中转义Restful API查询字符串中的特殊字符

标签 java rest elk

我尝试修改现有查询字符串来过滤指定条件: 现在查询字符串如下:

String bodycontent="{"
                +"  \"_source\": [\"@timestamp\",\"eqpid\",\"lotid\",\"stageid\",\"srvmethod\",\"parm_1\",\"apcack\",\"description\",\"host\",\"path\",\"action\"],"
                +"  \"query\": {"
                +"    \"query_string\" : {"
                +"        \"query\":\" lotid:"+q_lotid+" AND "+host_type+"\"}"
                +"  },"
                +"  \"sort\" : [{\"@timestamp\" : { \"order\" : \"desc\" }}]"
                +"}";

我想更改以下查询条件:

query :
type:ams_log AND (alm_source:K*) AND (alm_id:TCS00004 OR alm_id:TCS00005 OR alm_id:TCS00007 OR alm_id:TCS00008 OR alm_id:TCS00009 OR alm_id:TCS00010 OR alm_id:TCS00011 OR alm_id:TCS00012 OR alm_id:TCS00013 OR alm_id:TCS00020 OR alm_id:TCS00024 OR alm_id:TCS00032)

但我很困惑如何使用斜杠 \ 和双引号 " 修改查询字符串。 我找不到规则,谢谢!

最佳答案

  • 斜线 - \\
  • 引用 - \"

System.out.println("\\ \"hello\"");

输出:

\“你好”


关于您的查询,似乎键和值都必须位于引号之间 "key":"value"

String lotId="2020_A_88";
String type="apples";
String queryPart = "\"lotId\":\""+lotId+"\" AND \"type\":\""+type+"\"";
System.out.println(queryPart);    

“lotId”:“2020_A_88”和“type”:“苹果”


String example = String.format("Slash-> %s , Quotes-> %s", "\\" ,"\"name\""); 
System.out.println(example);

斜杠->\、引号->“名称”


String s = "\\";
String q = "\"name\"";
System.out.println("Slash-> "+s+" , Quotes-> "+q);

斜杠->\、引号->“名称”

关于java - 如何在JAVA中转义Restful API查询字符串中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65476057/

相关文章:

rest - 如何将参数传递给MiddlewareFunc?

elasticsearch - Kibana:不需要的双重排序(为什么我保存的搜索按@timestamp排序?)

java - 用于剖析的不同工具以及对hadoop map的某种监视会减少Java中的程序?

java - 类型为Printwriter的方法println(boolean)不适用于参数(void)

java - PHP 的日期和时间助手(类似于 Java 中的 Joda-Time)

elasticsearch - Elasticsearch索引无法识别日期(Logstash管道)

mongodb - Docker:用于ElasticSearch和Mongodb的容器外部的持久数据

Java 正则表达式用空格去除前导零和尾随零

python - Django 管理命令参数

angular - automl 将数据导入数据集 发现错误列表 : 1. 字段:名称;消息:必填字段无效