34.初识搜索引擎及timeout机制

Posted Outback

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了34.初识搜索引擎及timeout机制相关的知识,希望对你有一定的参考价值。

主要知识点

1、对搜索执行结果的说明

2timeout机制讲解

一、对执行 GET /_search 的结果的说明

执行结果如下(只保留部分)

{

"took": 29,

"timed_out": false,

"_shards": {

"total": 16,

"successful": 16,

"failed": 0

},

"hits": {

"total": 25,

"max_score": 1,

"hits": [

{

"_index": ".kibana",

"_type": "config",

"_id": "5.1.1",

"_score": 1,

"_source": {

"buildNum": 14566

}

},

以下说明各个字段的含义:

1took:整个搜索请求花费了多少毫秒

2hits.total:本次搜索,返回了多少条结果

3hits.max_score:本次搜索的所有结果中,最大的相关度分数是多少,每一条document对于search的相关度,越相关,_score分数越大,排位越靠前

4hits.hits:默认查询前10条数据,完整数据,_score降序排序

5shards:表示本次搜索过程中的shards信息。total 表示本次搜索请求一共路由到多少个shards中,"successful": 表示这些路由到的shards中有多少个是成功了的,"failed":表示这些路由到的shards中有多少个是失败了的。

shards fail的条件(primaryreplica全部挂掉),不影响其他shard。默认情况下来说,一个搜索请求,会路由到一个index的所有primary shard上去,每个primary shard都可能会有一个或多个replic shard,所以请求也可以到primary shard的其中一个replica shard上去。

6"hits" 一个数据,此次搜索返回的数据,默认返回10条,以_score降序排序

二、timeout机制

在默认情况下,es并无timeout,如果某一次搜索特别慢,要花5分钟才能完成,那es也会等5分钟搜索完成之后才返回结果,这种情况下对于那些对时间敏感的应用很不利,timeout机制指定每个shard只能在timeout所指定的时间内将已搜索到的结果返回(可能是部分数据),这样就可以确保每次搜索都能在指定的timeout时间内返回数据,

举例说明,假如有6个shard,对某一次搜索请求每个shard都返回1000条数据,都会花费100秒。如果指定了timeout=1s,那些es会在1秒后返回60条数据(10*6)。

可以在查询时指定timeout值

GET /_search?timeout=10m

timeout=10ms(毫秒),timeout=1s(秒),timeout=1m(分)

   

以上是关于34.初识搜索引擎及timeout机制的主要内容,如果未能解决你的问题,请参考以下文章

第128天学习打卡(ElasticSearch 初识elasticreach 及安装)

ES篇:logstash初识

初识Solr,基于Lucene的全文搜索服务器

JavaScript工作机制:V8 引擎内部机制及如何编写优化代码的5个诀窍

Actiove Directory的DirectoryEntry与DirectorySearcher初识及Filter语法

Linux下玩转nginx系列——初识nginx及其使用入门