美文网首页
30、初识搜索引擎_search结果深入解析(search ti

30、初识搜索引擎_search结果深入解析(search ti

作者: 拉提娜的爸爸 | 来源:发表于2020-01-05 21:58 被阅读0次

1、我们如果发出一个搜索请求的话,会拿到一堆搜索结果,这个搜索结果里的各种数据,都代表了什么含义。

GET /_search
----------------------------------结果----------------------------------
{
  "took": 6,
  "timed_out": false,
  "_shards": {
    "total": 6,
    "successful": 6,
    "failed": 0
  },
  "hits": {
    "total": 10,
    "max_score": 1,
    "hits": [
      {
        "_index": ".kibana",
        "_type": "config",
        "_id": "5.2.0",
        "_score": 1,
        "_source": {
          "buildNum": 14695
        }
      }
    ]
  }
}

took:整个搜索请求花费了多少毫秒
hits.total:本次搜索,返回了几条结果
hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少,每一条document对于search的相关度,越相关,_score分数越大,排位越靠前。
hits.hits:默认查询前10条数据,完整数据,_score降序排序
shards:shards fail的条件(primary和replica全部挂掉),不影响其他shard。默认情况下来说,一个搜索请求,会打到一个index的所有primary shard上去,当然了,每个primary shard都可能会有一个或多个replic shard,所以请求也可以到primary shard的其中一个replica shard上去。

2、搜索的timeout机制,底层的原理

timeout:默认无timeout,latency平衡completeness,手动指定timeout,timeout查询执行机制。
在查询时,可以手动加上timeout,如:GET /_search?timeout=10ms,timeout=10ms(毫秒),timeout=1s(秒),timeout=1m(分)。
为什么设置timeout?
(1)如果不设置timeout,我们在查询数据时,加入要查询的数据很多,花费时间很长,甚至几分钟,我们就要等待几分钟之后才能收到返回的结果,对于一些响应速度很敏感的应用,比如电商网站,如果让客户等待这么长时间,那么客户可能就走了,用户体验不好。
(2)timeout机制可以指定每个shard只能在timeout指定的时间范围内,将搜索到的部分数据(也可能全部搜索到了),直接返回给客户端程序,而不是等待数据全部查询出来之后再返回给客户端。
(3)确切的说一次搜索请求可以在用户指定的timeout时长内完成,为一些时间敏感的搜索应用提供良好的支持。
举例:
假设一个es集群内有2个shard,每个shard搜索出来1000条数据需要耗时一分钟,当客户端发送搜索请求并指定timeout为10ms时,假如每个shard在10ms内可以搜索到10条数据,那么当timeout请求时间到达10ms是,这个es集群会返回10*2=20条数据给客户端。

timeout机制图解

相关文章

网友评论

      本文标题:30、初识搜索引擎_search结果深入解析(search ti

      本文链接:https://www.haomeiwen.com/subject/lkwcactx.html