如何使用 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
在发出搜索请求时,通过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