代码之家  ›  专栏  ›  技术社区  ›  Veverke

如何使用rest-request-body方法执行ElasticSearch,并获取返回的json-formatted/pretty?

  •  1
  • Veverke  · 技术社区  · 6 年前

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

    get/bank/\u search
    {
    “query”:“match_all”:,
    “排序”:。[
    “账号”:“asc”
    ]
    }
    

    是否有一个参数可以添加到任何地方以请求对返回的响应主体的JSON进行格式化/美化?

    使用rest-request-uri进行相同的搜索,例如

    get/bank/\u search?Q=*&sort=账号:asc&pretty
    

    如何使用rest request body实现相同的功能?

    使用elasticsearch.net的低级API,人们无法控制REST调用,只能提供post-json。

    var esclient=new elasticlowlevelclient(_connectionsettings);
    //postdatajson是问题体中描述的json
    var postdata=postdata.string(postdatajson);
    var response=esclient.search<stringResponse>(“myIndex”,postData);
    

    可以发送第三个参数,asearchrequestparameters.object,I can't find any property there for that.

    .

    是否有一个参数可以添加到任何地方以请求对返回的响应主体的JSON进行格式化/美化?

    使用相同的搜索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);
    

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Green Moshe    6 年前

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

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

    更多参考检查 here

    编辑

    我一开始不明白你的意思,漂亮的应该在请求的开头。
    试着这样做:

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

    编辑2

    如果您正在使用 Elstic.net网站 你也要实现漂亮的杰森。
    您需要在中配置它 连接 . 这是您应该使用的方法(它在类中 ConnectionConfiguration : 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