起因
最近一直苦恼于elasticsearch中的一个查询,总数据量10亿条,按条件term查询,只取符合条件的10条数据,3个集群节点(64G 32C),查询耗时80ms,并发一直上不去,只有300qps。按理说,既无排序又无算分,不应该那么慢才对!
GET demo/_search
{
"query": {
"nested": {
"path": "tags",
"query": {
"term": {
"tags.name": "文章"
}
}
}
},
"size": 10
}
解决方案
找了一番资料,原来是符合这个查询条件的数据很大,达到1亿条,每个分片将其所有符合条件的数据的id 返回到协调节点,协调节点再取10个id去查询数据返回给客户端,虽然分片是返回数据的id,但是数据量大的时候也是很耗时的,有没有办法控制分片返回的数据量呢?答案是有的
添加参数:terminate_after
GET demo/_search
{
"query": {
"nested": {
"path": "tags",
"query": {
"term