对elasticsearch的jmeter http请求中的三个引号

vfhzx4xs  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(2)|浏览(626)

我正在用jmeter工具测试elasticsearch,还不能解决错误http请求字符串引用的情况。
我的管道:
读取csv文件
对elasticsearch进行查询
测试数据集包含带双引号的字符串。在这种情况下,我使用三重引用。
例如,
查询\u 1

{
    "query":
    {
        "match":
        {
            "title":
            {
                "query": """Green apple" fresh"""
            }
        }
    }
}

响应1

"caused_by":{"type":"json_parse_exception",
"reason":"Unexpected character ('\"' (code 34)): 
was expecting comma to separate Object entries\n at [
Source: (org.elasticsearch.common.bytes.AbstractBytesReference$MarkSupportingStreamInputWrapper)

由于“'”符号而发生错误。
如果我在kibana中运行相同的查询,答案是正确的。
我正在使用for请求内容类型:application/json;字符集=utf-8
在jmeter system.properties中编码:

- file.encoding=UTF-8
- file.encoding.pkg=sun.io
- sun.io.unicode.encoding=UnicodeBig
- sun.jnu.encoding=UTF-8

还有

Jmeter ver.:        5.3
ElasticSearch ver.: 7.9

有没有可能不经过数据预处理就解决这个问题?
如果您有任何建议,我们将不胜感激!

s71maibg

s71maibg1#

使用groovy脚本通过jsr223预处理器在不使用三重引号的情况下解析:

def title_escaped = vars.get("title").replaceAll('\\"','');
vars.put('title_escaped', title_escaped);

感谢@janesh的发现。

rslzwgfq

rslzwgfq2#

你可以在双引号前用反斜杠 \" 在值内

{
"query":
{
    "match":
    {
        "title":
        {
            "query": "Green apple\" fresh"
        }
    }
}

}

相关问题