如何使用 REST 请求主体方法进行 ElasticSearch 并获得返回的 json 格式化/漂亮?

How to do an ElasticSearch using REST request body method and get the returned json formatted / pretty?

在发出搜索请求时,通过REST Request Body方法,例如

GET /bank/_search
{
  "query": { "match_all": {} },
  "sort": [
    { "account_number": "asc" }
  ]
}

是否有可以在任何地方添加的参数来请求返回的响应主体的json是formatted/pretty?

使用 REST Request URI 的相同搜索可以做到这一点,例如

GET /bank/_search?q=*&sort=account_number:asc&pretty

如何使用 REST request body 实现同样的效果?

使用ElasticSearch.NET的底层api,无法控制REST调用,只能提供POST json.

var esClient = new ElasticLowLevelClient(_connectionSettings);
//postDataJson is the json depicted in the question's body
var postData = PostData.String(postDataJson); 
var response = esClient.Search<StringResponse>("myIndex", postData);

可以发送第三个参数,一个 SearchRequestParameters 对象,我在那里找不到任何 属性。

您需要添加到您的请求中pretty=true
像那样:

GET /bank/_search?q=*&sort=account_number:asc&pretty=true

查看更多参考资料here

编辑

一开始没看懂,漂亮的应该在请求的header里。
像那样尝试:

GET /bank/_search?pretty=true
{
  "query": { "match_all": {} },
  "sort": [
    { "account_number": "asc" }
  ]
}

编辑 2

如果您正在使用 elstic.NET 并且您也想获得漂亮的 Jason。
您需要在 连接 中配置它。 这是你应该使用的方法(它在 classConnectionConfiguration : ConnectionConfiguration<ConnectionConfiguration>):

    /// <summary>
    /// Forces all requests to have ?pretty=true querystring parameter appended,
    /// causing Elasticsearch to return formatted JSON.
    /// Also forces the client to send out formatted JSON. Defaults to <c>false</c>
    /// </summary>
    public T PrettyJson(bool b = true) => Assign(a =>
    {
        this._prettyJson = b;
        const string key = "pretty";
        if (!b && this._queryString[key] != null) this._queryString.Remove(key);
        else if (b && this._queryString[key] == null)
            this.GlobalQueryStringParameters(new NameValueCollection { { key, "true" } });
    });

这里可以看到git