请问大家,ES有没有限制搜索结果数的功能?
匿名 | 发布于2017年12月13日 | 阅读数:17512
目前碰到一个问题,当ES搜索匹配结果数比较多时(超过200万左右),耗时很长,大概要1s多,如下所示:
(匹配结果数为:3129364)
{ "took": 1685,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 3129364,
"max_score": null,
......
}
}
想问下,ES是否有这样的功能:
当搜索结果匹配数到达一定数目时(比如10000),就结束搜索,直接返回结果,限制搜索结果匹配总数
(匹配结果数为:3129364)
{ "took": 1685,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 3129364,
"max_score": null,
......
}
}
想问下,ES是否有这样的功能:
当搜索结果匹配数到达一定数目时(比如10000),就结束搜索,直接返回结果,限制搜索结果匹配总数
13 个回复
rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk
赞同来自: elisha 、laoyang360 、张鹏 、ziyou 、Javmain
phoenix
赞同来自: laoyang360 、wokeyi
curl -XPUT http://127.0.0.1:9200/book/_settings -d '{ "index" : { "max_result_window" : 200000000}}'
不确定的该字段限制在query还是fetch阶段起作用。
ELKer
赞同来自: phoenix
laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net
赞同来自: elisha
sqyES
赞同来自: elisha
{"took": 774,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 2101302,
"max_score": 3.141577,
"hits": [
{
.....
}
elisha - 80后 IT
赞同来自:
"aggs": {
"aggs_industry": {
"terms": {
"field": "industry_name"
}
},
"aggs_province": {
"terms": {
"field": "province"
}
},
"aggs_tags": {
"terms": {
"field": "corp_tags"
}
}
}
gtexpanse
赞同来自:
如果你仅仅是query阶段就这么慢,那肯定要做index优化了
kurisu
赞同来自:
zhihuizhou
赞同来自:
EricShane
赞同来自:
intergret
赞同来自:
hapjin
赞同来自:
另外,还有个timeout参数,可防止搜索长时间不响应。你可以参考这篇:minimum_should_match 能够减少单字段 match 查询的响应时间吗?
aspcat
赞同来自:
( https://medium.com/cognigo/imp ... 71059 )
看到这篇文章,看看对你有没有用。