现象:使用elasticsearch java api RestHighLevelClient 客户端查询索引数据,耗时7~8分钟
业务使用场景:页面模糊搜索,要求对所有索引content、phone字段进行模糊查询或者对于phone精确查询
索引存储方式:按天存储,总共存储14个月的索引,比如:index_20221201
数据量级:目前3000亿,数据还在持续增加
数据录入方式:自己实现代码,使用scala开发,spark本地模式,实现读取本地gz文件解析内容写入es,一天录入数据量80亿左右
录入字段数量:12个字段
目前录入索引数量:216个,预计410个
查询做法:使用elasticsearch java api RestHighLevelClient 客户端查询索引数据
查询方式:包含terms、term、match、range、wildcard
操作环境:
{
"persistent" : {
"indices.breaker.total.limit":"95%",
"indices.breaker.fielddata.limit":"40%",
"indices.breaker.request.limit":"70%"
}
}
indices.fielddata.cache.size:30%
关闭swap
swapoff -a
查询速度提升到秒级
ES数据量一大时,特别是第一次搜索的时候耗时会很久(甚至10s以上)。也不要认为改个参数就能改善所有性能慢的场景。