2017-07-26 76 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。

在我的情况,而这些都不是理想的他们可接受的限制...

相关问题