两个一样的match查询,只是一个指定了 minimum_should_match 参数为75%,另一个不指定minimum_should_match 。前者的搜索响应时间(took)应该都会比后者要小吧?【当查询字符串一样时,ES查询后会缓存数据,所以不太好对比】
我的理解是:用profile 查询分析,在 term query阶段 所花的时间应该一样,但是 minimum_should_match 使得匹配的文档数量少了,既然数量少了 那么 在rewrite、collector花的时间就少了吧?毕竟要处理的文档数量少了呀。
另外,像我这种单字段,match query,有没有什么其他的方法提升搜索的响应时间?比如 搜索返回结果里面有个 total hits,一般都有几十万,比如能不能直接 total hits 命中1万,就不要再去搜索其他的document了,最相关的1万就好了。(注意这里是 total hits 不是 分页参数 from size)
我的理解是:用profile 查询分析,在 term query阶段 所花的时间应该一样,但是 minimum_should_match 使得匹配的文档数量少了,既然数量少了 那么 在rewrite、collector花的时间就少了吧?毕竟要处理的文档数量少了呀。
GET user_v1/profile/_search
{
"profile":true,
"query": {
"match": {
"nick": {
"query": "大师级别股市达人",
"minimum_should_match": "75%"
}
}
}
}
另外,像我这种单字段,match query,有没有什么其他的方法提升搜索的响应时间?比如 搜索返回结果里面有个 total hits,一般都有几十万,比如能不能直接 total hits 命中1万,就不要再去搜索其他的document了,最相关的1万就好了。(注意这里是 total hits 不是 分页参数 from size)
2 个回复
Jea - 一只猿
赞同来自: hapjin
第二个问题: 用terminate_after, 具体看官方文档 https://www.elastic.co/guide/e ... .html
类库: https://github.com/callmejea/PHP-Elasticsearch 简单的轮子自己看下
hapjin
赞同来自: