2017-07-26 21 views
0

我似乎在反駁CloudSearch的某些限制,我無法弄清楚。我在.NET中工作,我有一種情況,我希望允許在搜索中使用大量的「播放列表」,這會產生長時間的查詢,但似乎大部分工作。但是在某些情況下,我收到了一個我完全不明白的錯誤。這裏是堆棧跟蹤:AWS CloudSearch錯誤無需智能迴應

Amazon.Runtime.AmazonUnmarshallingException: Error unmarshalling response back from AWS. ---> System.NullReferenceException: Object reference not set to an instance of an object. 
    at Amazon.Runtime.Internal.Transform.JsonErrorResponseUnmarshaller.Unmarshall(JsonUnmarshallerContext context) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Internal\Transform\JsonErrorResponseUnmarshaller.cs:line 103 
    at Amazon.CloudSearchDomain.Model.Internal.MarshallTransformations.SearchResponseUnmarshaller.UnmarshallException(JsonUnmarshallerContext context, Exception innerException, HttpStatusCode statusCode) in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Services\CloudSearchDomain\Generated\Model\Internal\MarshallTransformations\SearchResponseUnmarshaller.cs:line 92 
    at Amazon.Runtime.Internal.Transform.JsonResponseUnmarshaller.UnmarshallException(UnmarshallerContext input, Exception innerException, HttpStatusCode statusCode) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Internal\Transform\ResponseUnmarshallers.cs:line 198 
    at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleException(IExecutionContext executionContext, HttpErrorResponseException exception) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\HttpErrorResponseExceptionHandler.cs:line 78 
    --- End of inner exception stack trace --- 
    at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleException(IExecutionContext executionContext, HttpErrorResponseException exception) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\HttpErrorResponseExceptionHandler.cs:line 111 
    at Amazon.Runtime.Internal.ExceptionHandler`1.Handle(IExecutionContext executionContext, Exception exception) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ExceptionHandler.cs:line 38 
    at Amazon.Runtime.Internal.ErrorHandler.ProcessException(IExecutionContext executionContext, Exception exception) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 204 
    at Amazon.Runtime.Internal.ErrorHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 78 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.CallbackHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CallbackHandler.cs:line 45 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.Signer.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\Signer.cs:line 38 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.CredentialsRetriever.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CredentialsRetriever.cs:line 72 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.RetryHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\RetryHandler\RetryHandler.cs:line 84 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.CallbackHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CallbackHandler.cs:line 45 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.EndpointResolver.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\EndpointResolver.cs:line 34 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.Marshaller.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\Marshaller.cs:line 37 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.CloudSearchDomain.Internal.ProcessRequestHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Services\CloudSearchDomain\Custom\Internal\ProcessRequestHandler.cs:line 26 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.CallbackHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CallbackHandler.cs:line 45 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.ErrorCallbackHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\ErrorCallbackHandler.cs:line 44 
    at Amazon.Runtime.Internal.PipelineHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\PipelineHandler.cs:line 55 
    at Amazon.Runtime.Internal.MetricsHandler.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\MetricsHandler.cs:line 40 
    at Amazon.Runtime.Internal.RuntimePipeline.InvokeSync(IExecutionContext executionContext) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\RuntimePipeline.cs:line 135 
    at Amazon.Runtime.AmazonServiceClient.Invoke[TRequest,TResponse](TRequest request, IMarshaller`2 marshaller, ResponseUnmarshaller unmarshaller) in E:\JenkinsWorkspaces\v3-trebuchet-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\AmazonServiceClient.cs:line 192 
    at Amazon.CloudSearchDomain.AmazonCloudSearchDomainClient.Search(SearchRequest request) in E:\JenkinsWorkspaces\v3-stage-release\AWSDotNetPublic\sdk\src\Services\CloudSearchDomain\Generated\_bcl35\AmazonCloudSearchDomainClient.cs:line 132 
    at SPTR.Gamut.Data.AWS.AwsCore.GetSearchResult(String searchString, Int32& totalFound, List`1& facets, Nullable`1 searchType, Boolean paginateAsList) in C:\RD\Commercial Software\SPECtrum\Gamut\Code\GamutBase\Data\AWS\AwsCore.cs:line 1427 
    at SPTR.Gamut.SearchVM.DoSearch() in C:\RD\Commercial Software\SPECtrum\Gamut\Code\GamutBase\SearchVM.cs:line 224 

的事情是,如果我沒有刻面在此它工作得很好,只要我打開它得到錯誤的任何方面。另外,如果我減少到100個播放列表而不是150個,並且打開刻面也可以正常工作。這一切都讓我相信,它存在某種類型的限制,即拋出錯誤。

這裏是,進行了錯誤的一個數據:

查詢(結構分析器):(或(術語「門」)(前綴升壓= 0.25「門」)(和(或(術語「門')(前綴提升= 0.25'門'))(術語字段= favouritedusers boost = 1。5 '9219cfe5-9756-45e7-ae15-b5ca73748404')))

FilterQuery:(和(或主旨: '08710')OBJECTTYPE:'10' (或播放列表: '9i2frcy8' 播放列表: 'uwpvqyxh' 播放列表: '0qtvwena'播放列表:'2gqii0go'播放列表:'8qj8cgvw'播放列表:'l8a56uvd'播放列表:'8lf98mhe'播放列表:'0f7giujd'播放列表:'ut1qckaj'播放列表:'h4dbj7s9'播放列表:'c9mm1dm6'播放列表:'mjp0frtb'播放列表: 'j2ndnbri'播放列表:'f854hpfj'播放列表:'tb6li0qt'播放列表:'8ox2i76j'播放列表:'9cwmleut'播放列表:'ny6cev1u'播放列表:'1m4x5i1x'播放列表:'ge251k0f'播放列表:'ylne2cy8'播放列表:'nvwwpybx'播放列表: 'xy3vlw6k'播放列表:'4je6ema4'播放列表:'rxb4jvuf'播放列表:'be0cqgih'播放列表:'h448us7o'播放列表:'fq6ruon1'播放列表:'101svsr1'播放列表:'ti3nqavr'播放列表:'u0h2bspq'播放列表:'usoj1juy'播放列表: '8hrw4h8o'播放列表:'gr4n8x6a'播放列表:'k8qy3c5r'播放列表:'3wcgj6qp'播放列表:'slqorl5t '播放列表:'y5tyrdgy'播放列表:'681wh04e'播放列表:'dvp6mqor'播放列表:'r5fe7di4'播放列表:'fmtm0hn2'播放列表:'q96rvp4q'播放列表:'5p8c1v8o'播放列表:'vivmluko'播放列表:'wtneponn'播放列表:'qeok75fn '播放列表:'jni0x45c'播放列表:'y9oh506q'播放列表:'sgu0t3ta'播放列表:'llk4ic2w'播放列表:'2o0rh2yn'播放列表:'6nfvkcx2'播放列表:'jyg2cymq'播放列表:'olqvouu4'播放列表:'8q2t2eoo'播放列表:'jxu400y7 '播放列表:'uy7vi8f0'播放列表:'p1deaf2h'播放列表:'70t9gpra'播放列表:'4x8xwypa'播放列表:'xrwwdfo4'播放列表:'xjwwydlm'播放列表:'nmgdgjxp'播放列表:'5n0galk7'播放列表:'avg3g9w7'播放列表:'4hi5qxbf '播放列表:'82v4tmgr'播放列表:'8kl1sguf'播放列表:'2vm68mfv'播放列表:'i2c5bt61'播放列表:'ibdrl9w8'播放列表:'dxnn2y0y'播放列表:'faqqq80p'播放列表:'tlsad9cx'播放列表:'6xuqmi30'播放列表:'qtkibnnv '播放列表:'jgbp6ux7'播放列表:'hmekjdg6'播放列表:'scgkd7i7'播放列表:'quup0wig'播放列表:'ux42kss3'播放列表:'828u9ir1'播放列表:'bx8eevau'播放列表:'' 'mx0g4a4'播放列表:'mp15xd5c'播放列表:'qedatlm7'播放列表:'dxtbs3wy'播放列表:'g5n8jtai'播放列表:'dmbexfiq'播放列表:'suvegdq7'播放列表:'imx2ahs6'播放列表:'3ijkufbe'播放列表:'4keg8svd'播放列表:'' w24ddnig'播放列表:'ytvlqovy'播放列表:'xpwypcof'播放列表:'wa8nnfck'播放列表:'p7vv2osu'播放列表:'s0tamtvw'播放列表:'5322h108'播放列表:'fcq853br'播放列表:'ev4etn0y'播放列表:'s71e1rq9'播放列表:'' 'bghv5v'播放列表:'wd54ybpa'播放列表:'ta76327c'播放列表:'6ca3h73p'播放列表:'cv0dn0i0'播放列表:'smil74bn'播放列表:'1o1y133q'播放列表:'4fr5cj6h'播放列表:'49h3ybcc'播放列表:'9g891fdi'播放列表:'' i01h0dit'播放列表:'1n0mx1gs'播放列表:'q2oea37k'播放列表:'f0v6r6yn'播放列表:'d1lao5gp'播放列表:'bgaa5ix3'播放列表:'lg4tttop'播放列表:'2b8sl742'播放列表:'6uqj5dl7'播放列表:'3t9cb7wj'播放列表:'' gylul16i'播放列表:'3xgjgmw7'播放列表:'epk4pc39'播放列表:'wmcmovnk'播放列表:'ko2jphlb'播放列表:'u87cgxct'播放列表:'cs1lsia4'播放列表:'i2jjsa7r'pla 'rr3161xq'播放列表:'d6oemfis'播放列表:'4o8gd9he'播放列表:'wrrl3e2s'播放列表:'5bt9n80s'播放列表:'2mwvrovm'播放列表:'rc17tj4d'播放列表:'y4sprfou'播放列表:'06hluw5h'播放列表:'d22u2nfn'播放列表: 'tx97dgvo' 播放列表: '2kb85l0g' 播放列表: '30amwf4j' 播放列表: 'u3yu0euy' 播放列表: 'sh9sf9yj' 播放列表: 'cbah1wub' 播放列表: 'kbbwdo2p' 播放列表: 'xio2uj1m' 播放列表: 'eshkknye'))

方面:{「category」:{},「assemblycode」:{},「keynote」:{buckets:[「08710」]},「omniclass」:{},「playlists」:{},「status」 {},「host」:{},「sourcefile」:{}}

查詢選項:{「fields」:[「assemblycode^1」,「assemblydescription^1」,「類別^ 1" , 「文件名^ 1.5」, 「基調^ 1」, 「關鍵字^ 1.5」, 「名稱^ 1.5」, 「omniclass^1」, 「omniclasstitle^1」,「parametersearchvalues^0。 5「]}

我找到了頁面http://docs.aws.amazon.com/cloudsearch/latest/developerguide/limits.html並查看了它。但是,我沒有看到我會遇到的限制。我沒有1024個子句,我有大約150個。獲取最大8190字節;我已經添加了我的字符串,它涉及到約3500個字符。我不確切知道CloudSearch API如何格式化get,但我懷疑它的長度會增加一倍以上。

任何人都可以告訴我什麼問題是我打的?在.NET SDK中,還有一種很好的方法來計算一個get的字節數,以確保我不會觸及它?

+0

您好像假設UTF-8字符是一個字節,但是它們可以特別是對非英語是多字節字符。可能是一個紅鯡魚,但我想指出, – alexroussos

+0

好點。然而,在這種情況下,所有的值都是僅從數字或英文字母生成的id ......我不是任何字符編碼方面的專家,但我不認爲這是一個問題。字符串在上面,所以讓我知道是否有很多多字節字符。可能有一些,但我認爲絕大多數是單身... – sfaust

回答

0

好吧,我仍然不知道限制是什麼,但我找到了解決這個問題的方法。我在這裏發佈它作爲答覆,以幫助其他人處理這種情況或類似的情況,但如果有人知道我打了什麼限制或如何處理這個更好,我會接受這個答案...

所以我最終把我的搜索分解成多個請求。基本上,如果播放列表的列表超過100個,我將其分成100個播放列表塊,併爲每個塊提交請求。然後我從每個結果集中取出結果集,並將它們放回到最終結果集中。這與我會知道,如果你要使用這種方法的幾件物品的作品:

  • 當然,這是慢一點,因爲你搜索多次,而不是一次。
  • 如果您正在分頁,您需要存儲每個搜索請求/響應對象以獲取下一個集合,而不是一個,並在獲取下一頁時執行相同的操作。
  • 搜索質量可能會降低。如果你從兩個不同的組別中排名前五,則不能保證它將成爲整體前10名。第2組的前5名可能在整體中排名爲30-35,但在拆分結果集中顯示爲6-10。

在我的情況,而這些都不是理想的他們可接受的限制...

相關問題