elasticsearch 如何使用Postman编写多行Elasticsearch脚本,elasticsearch,postman,elasticsearch,Postman" /> elasticsearch 如何使用Postman编写多行Elasticsearch脚本,elasticsearch,postman,elasticsearch,Postman" />

elasticsearch 如何使用Postman编写多行Elasticsearch脚本

elasticsearch 如何使用Postman编写多行Elasticsearch脚本,elasticsearch,postman,elasticsearch,Postman,我正在尝试使用Postman的一个非常简单的脚本执行Elasticsearch GET查询。当脚本全部在一行上时,它可以工作,但如果我尝试执行多行,则会出现错误 我将数据表示为JSON,标题中的内容类型为application/JSON 示例-工程: { "query":{ "match_all": {} }, "script_fields": { "my_custom_field":{ "script": {

我正在尝试使用Postman的一个非常简单的脚本执行Elasticsearch GET查询。当脚本全部在一行上时,它可以工作,但如果我尝试执行多行,则会出现错误

我将数据表示为JSON,标题中的内容类型为application/JSON

示例-工程:

{
    "query":{
        "match_all": {}
    },
    "script_fields": {
        "my_custom_field":{
            "script": {
                "lang": "painless",
                "source": "int count = 1; return count;"
            }
        }
    }
}
示例-产生错误:

{
    "query":{
        "match_all": {}
    },
    "script_fields": {
        "my_custom_field":{
            "script": {
                "lang": "painless",
                "source": """
                   int count = 1;
                   return count;
                """
            }
        }
    }
}
错误:

 "Unexpected character ('\"' (code 34)): was expecting comma to separate Object entries\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@20493763; line: 9, column: 18]"

我认为邮递员可能在幕后添加了换行符。

JSON中的三重引号在技术上是无效的-有关更多信息,请参阅

基本上有三种选择:

编写一个脚本,接收多行“JSON”并生成一个\n分隔的有效JSON,这是我在JavaScript中使用多行反勾选字符串之前经常做的事情,在php中仍然如此: 使用邮递员自己的脚本 或者,可能是最合理的选择,设置在ElasticSearch服务器旁边。Kibana非常适合测试查询,它还支持邮递员复制功能:
首先,您的第一个解决方案是编写一个函数来解析换行符,但我将在哪里执行该函数?邮递员在哪里?我的问题是能够在Postman中编写多行脚本。第二,我查看了邮递员的预请求脚本,但是此功能不允许您更改请求正文,这是我需要更改的内容,因为这就是我的脚本所在的位置。第三,感谢您的建议,但是我没有访问Kibana的权限,这看起来更像是一个解决方案,而不是一个允许我在postmanChange Postman请求正文中运行多行脚本的解决方案,那么答案是否定的。您不能在Postman中这样做。不过,让Kibana继续运转的投资是值得的。你用邮递员干什么?JSON有效负载到搜索和其他端点,没有?所有这些都适用于Kibana,加上多行三引号字符串,再加上自动完成等等。试一试,只是偶然发现:
function compactifyMultilineString( $input_string )
{
    return str_replace( array( "\r", "\n", "\t" ), " ", $input_string );
}