你可以的,加油

ES中查询慢,有什么办法可以加快查询速度?

Elasticsearch | 作者 zxpost1927 | 发布于2019年01月07日 | 阅读数:8026

现在用的是es版本5.6.2,单个索引大小50GB,2.8亿条数据,5个分片,节点为1个,配置SSD盘,剩余内存足够。索引按天分开,保持最近2天的索引,查询用filter,查询时是按时间查询最新的10条,打开索引慢日志,发现需要去每个分片查询,并且单个分片查询时间在6s-7s,整个请求查询耗时13-15s左右。
 
有没有办法提升查询速度,十几秒的响应时间对于页面交互太长了。
已邀请:

rochy - rochy_he

赞同来自:

如果只是查询最新的 10 条数据,速度应该是非常快的,2.8 亿条也应该是很快返回。
你可以把查询的 DSL 贴一下。

God_lockin

赞同来自:

查询速度和很多因素有关的,数据量、字段mapping、搜索语句、聚合、分词、搜索复杂程度…

zxpost1927

赞同来自:

这个是慢日志打印出来的,这个里面只是简单按时间段查询,没有聚合,也没有使用分词,慢日志中打出来后里面的时间的from和to都是null, 但确实是填写了的。[2018-12-07T21:47:51,345][WARN ][index.search.slowlog.query] [node-1] [my_index][4] took[6.0s], took_millis[6011], types[MyIndex], stats[], search_type[QUERY_THEN_FETCH], total_shards[10], source[{"from":0,"size":10,"query":{"bool":{"must":[{"range":{"Time":{"from":null,"to":null,"include_lower":true,"include_upper":true,"boost":1.0}}},{"range":{"Time":{"from":null,"to":null,"include_lower":true,"include_upper":true,"boost":1.0}}}],"filter":[{"terms":{"MyID":[16789668,4333514564,8602451860,1290789156,1719776452,21491583748,2578851044,30083638340,34376445636,38666552932,42966420012,47261852524,51565454820,98751322116后面加上大约有5千个ID

weizijun - elasticsearch fan

赞同来自:

你这两个range功能上没起效果吧,去掉就会快很多

God_lockin

赞同来自:

有没想过把你5k的id分组,然后多线程请求ES,再聚合回来?如果你的id是主键的话连去重都不用

acaidemao - 阿菜的猫

赞同来自:

总数据量12亿,terms in 100多个,from 0, size 10,查询接近1s,多个terms in 查询就更加耗时了。

要回复问题请先登录注册