2017-08-18 12 views
0

日付範囲を使用して注文を抽出するためにDemandware(SFCC)APIにクエリを実行しようとしています。 POST to orders_searchは機能しますが、非常に非効率的です。最初に私はすべてデータをプルし、私は結果をフィルタリングします。Salesforce Commerce Cloud/Demandware - 日付範囲によるOCAPIクエリの注文

私は単に日付範囲を照会したいと思いますが、その方法を理解することはできません。助けて。

{ 
    query : { 
     filtered_query: { 
      query: { 
       term_query: { fields: ["creation_date"], operator: "is_not_null" } 
      }, 
     filter: { 
       range_filter: { 
        field: "creation_date", 
        from: "2017-08-12T00:00:00.000Z", 
        to: "2017-08-13T00:00:00.000Z", 
        from_inclusive: true 
       } 
      } 
     } 
    } 
} 

編集:私は最初の質問を解決しながら、このサービスは、一度に200の応答を可能にするため、より複雑になってしまいます。だから最初に、そこに結果がいくつあるかを調べる要求をしてから、そのサービスを複数回呼び出してデータを取得する必要があります。以下はC#で使用されるコードです。日付範囲は変数として渡されます。

   var m_payload_count = "{ query : { filtered_query: { query: { term_query: { fields: [\"creation_date\"], operator: \"is_not_null\" } }, filter: { range_filter: { field: \"creation_date\", from: \"" + strBeginDateTime + "\", to: \"" + strEndDateTime + "\", from_inclusive: true } } } } }"; 

       // can only get 200 responses at a a time so make a basic call first to get the total 

       m_response_count = apiClient.UploadString(m_url, m_payload_count); 

       dynamic m_jsoncount = JsonConvert.DeserializeObject(m_response_count); 

       // determine number of times of full api call, rounding up. substitute begin/end dates and beginning count placeholder 

       int m_records = m_jsoncount["total"]; 
       int m_numbercalls = (m_records + (200 - 1))/200; 

       dynamic m_json; 

       for (int i = 0; i < m_numbercalls; i++) 
       { 
        var m_payload = "{ query : { filtered_query: { query: { term_query: { fields: [\"creation_date\"], operator: \"is_not_null\" } }, filter: { range_filter: { field: \"creation_date\", from: \"" + strBeginDateTime + "\", to: \"" + strEndDateTime + "\", from_inclusive: true } } } }, select: \"(**)\", start: " + i * 200 + ", count: 200 }"; 

        m_response = apiClient.UploadString(m_url, m_payload); 

        m_json = JsonConvert.DeserializeObject(m_response); 

コードの残りの部分は省略されていますが、基本的にはm_jsonオブジェクトを反復しています。

答えて

1
{ 
    "query" : 
    { 
     "filtered_query": { 
      "query": { match_all_query: {} }, 
      "filter": { 
       "range_filter": { 
        "field": "creation_date", 
        "from": "2016-01-01T00:00:00.000Z" 
       } 
      } 
     } 
    }, 
    "select" : "(**)" 
} 
+1

解決策の提案理由を説明してください – sissy