簡體   English   中英

使用c#從彈性中檢索數據時出現問題

[英]Issue while retrieving the data from elastic using c#

我正在嘗試使用多個條件從彈性數據庫中檢索數據,例如 24 小時內的“cu_ticketLastUpdated_date”和屬於 COSMOS 的“平台”。 我在這些條件下使用下面的代碼

{
    "from": 0,
    "size": 10000,
    "query": {
        "bool": {
            "must": [
                {"match": {
                        "platform": "COSMOS"
                    }}],
            "filter": [
                {"range": {
                        "cu_ticketLastUpdated_date": {
                            "gte": "2022-05-31 00:00:00",
                            "lt": "2022-05-31 23:59:59"
                        }}}]}}}

當我在 Postman 中使用上面的代碼時,它運行良好。(同時滿足“cu_ticketLastUpdated_date”和“平台”條件)

但是,如果我試圖在 C# 中實現相同的條件,則只有一個條件滿足,即; “cu_ticketLastUpdated_date”在 24 小時休息條件“平台”= COSMOS 不工作....而不是我的 C# 代碼在 24 小時之間檢索所有平台數據

下面是我的 C# 代碼。 字符串 json中,我通過了這些條件。

        public static string COSMOS(string getAPiurl, string ApiUserId, string ApiPassword)
        {
            string url = getAPiurl;
            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);

            webrequest.Method = "POST";
            webrequest.ContentType = "application/JSON";
            webrequest.Accept = "application/JSON";

            String username = ApiUserId;
            String password = ApiPassword;
            String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));

            webrequest.Headers.Add("Authorization", "Basic " + encoded);


            using (var streamWriter = new StreamWriter(webrequest.GetRequestStream()))
            {
                string json = "{\"from\": 0,\"size\": 10000,\"query\":{\"bool\":{\"should\":[{\"match\":{\"platform\":{\"query\":\"COSMOS\"}}}],\"filter\":[{\"range\":{\"cu_ticketLastUpdated_date\":{\"gte\":\"2022-05-31 00:00:00\",\"lt\":\"2022-05-31 23:59:59\"}}}]}}}";
                
                streamWriter.Write(json);
            }

            var httpResponse = (HttpWebResponse)webrequest.GetResponse();

            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                httpResponse.Close();
                //MessageBox.Show(result);
                return result;

            }


        }

我正在嘗試多種方法來修復它。 但我無法解決這個問題。 任何人都可以幫助我解決問題。

特長;

您在postmanc#中沒有執行相同的查詢。 在郵遞員中使用must子句,而在c#中使用should

修理

public static string COSMOS(string getAPiurl, string ApiUserId, string ApiPassword)
{
    string url = getAPiurl;
    HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);

    webrequest.Method = "POST";
    webrequest.ContentType = "application/JSON";
    webrequest.Accept = "application/JSON";

    String username = ApiUserId;
    String password = ApiPassword;
    String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));

    webrequest.Headers.Add("Authorization", "Basic " + encoded);


    using (var streamWriter = new StreamWriter(webrequest.GetRequestStream()))
    {
        string json = "{\"from\": 0,\"size\": 10000,\"query\":{\"bool\":{\"must\":[{\"match\":{\"platform\":{\"query\":\"COSMOS\"}}}],\"filter\":[{\"range\":{\"cu_ticketLastUpdated_date\":{\"gte\":\"2022-05-31 00:00:00\",\"lt\":\"2022-05-31 23:59:59\"}}}]}}}";
        
        streamWriter.Write(json);
    }

    var httpResponse = (HttpWebResponse)webrequest.GetResponse();

    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        var result = streamReader.ReadToEnd();
        httpResponse.Close();
        //MessageBox.Show(result);
        return result;

    }


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM