Elasticsearch大数据查询优化(RequestOptions gzip压缩)

有时候我们在ES的查询的数据量比较大(字段较多&数据量比较大)。怎样去优化一个查询速度。

  • 在使用query的可以使用filter来代替must。filter不会计算分数会优先走缓存。
  • 开启es的数据压缩,可以将数据压缩比原始大小更小减少网络延迟。

主要记录一下Java es client开启数据gzip压缩。

只有客户端请求压缩时Elasticsearch才压缩数据。Java 客户端通过http request发送额外请求选项要求压缩。

实例代码:

//开启 gzip 压缩
RequestOptions requestOptions = RequestOptions.DEFAULT.toBuilder()
    .addHeader("Accept-Encoding", "gzip, deflate")
    .addHeader("Content-type", "application/json")
    .build();

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
//公司id列表筛选
boolQueryBuilder.filter(QueryBuilders.termsQuery("companyId", companyIdList));

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.timeout(new TimeValue(60L, TimeUnit.SECONDS));
sourceBuilder.from(0);
sourceBuilder.size(10000);
sourceBuilder.query(boolQueryBuilder);
//查询请求
SearchRequest searchRequest = new SearchRequest(new String[]{"test_index"}, sourceBuilder);
SearchResponse resp = restHighLevelClient.search(searchRequest, requestOptions);
  <elasticsearch>7.8.0</elasticsearch>

注意:Elasticsearch 7.8以上版本中 rest高级客户端会自动解压数据。

Elasticsearch 7.7 及以下版本处理压缩响应

​ 高级不支持处理压缩数据,当接收到压缩响应会直接抛出运行时异常。低级客户端提供Elasticsearch原始响应,因此可以进行解压。需要额外操作可以查阅官网。

在我们服务端请求es的时候数据已经压缩了,但是我们服务端到前端是请求还是没有压缩,大数据也是非常占用网络带宽。

以Spring boot 开启我们的压缩配置为例:

server:
  compression:
    enabled: true
    mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain
    min-response-size: 2KB
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值