简单的分享下最近在测需求的时候遇到的两个问题:
1、es翻页的问题
现象:
有一个接口,查的是es的数据,es里面数据有很多,前面翻页翻个1-2页验证基本功能没有问题,翻到第51页的时候,pageSize传200 去查数据的时候,查不到数据,实际上es里面满足条件的数据超过一万条。
找到开发定位问题后,给我发了下面一段提示内容:
ElasticsearchStatusException[Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=Result window is too large, from size must be less than or equal to: [10000] but was [10200]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.]]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=Result window is too large, from size must be less than or equal to: [10000] but was [10200]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.]];
如果你看不懂英文,那就chatgpt一下看个大概意思就行:
后来开发换了一种方式翻页查数据,改成用startId或者endId去进行翻页,直接翻上一页或者下一页。至于es超过1万条之前的查询方式具体有什么问题,这里我就不去深究了。
2、变更字段消息推送问题
背景:今晚在测一个需求,针对指定的某几个字段,发生变更后,要发消息到某个topic里面,其中这个字段的变更,开发是通过flink发送的binlog消息去处理的,遇到的问题是:字段由空变为有值/字段由有值变为空的时候,没有返回具体的字段名称,导致我们的业务处理出现一些预期之外的结果。只是正好挑选的测试数据有这种为空的场景,才发现了别人的问题 ,要是挑选的数据没有这种场景的话,可能在测试一些简单的需求的时候,容易忽略这种场景。