Elasticsearch 的检索与返回

2015-08-27 22:05:33   最后更新: 2015-11-02 18:09:29   访问数量:820




最基本的搜索就是空搜索,没有指定任何的查询条件,返回所有文档:

GET /_search

 

 

响应内容为:

{ "hits" : { "total" : 14, "hits" : [ { "_index": "us", "_type": "tweet", "_id": "7", "_score": 1, "_source": { "date": "2014-09-17", "name": "John Smith", "tweet": "The Query DSL is really powerful and flexible", "user_id": 2 } }, ... 9 RESULTS REMOVED ... ], "max_score" : 1 }, "took" : 4, "_shards" : { "failed" : 0, "successful" : 10, "total" : 10 }, "timed_out" : false }

 

 

有时,你可能想搜索一个或几个自定的索引或类型,我们能通过定义URL中的索引或类型达到这个目的

elasticsearch 多索引搜索请求
请求意义
/_search在所有索引的所有类型中搜索
/gb/_search在索引gb的所有类型中搜索
/gb,us/_search在索引gb和us的所有类型中搜索
/g*,u*/_search在以g或u开头的索引的所有类型中搜索
/gb/user/_search在索引gb的类型user中搜索
/gb,us/user,tweet/_search在索引gb和us的类型为user和tweet中搜索
/_all/user,tweet/_search在所有索引的user和tweet中搜索 search types user and tweet in all indices

 

下面的请求可以指定返回结果的数目:

GET /_search?size=5 GET /_search?size=5&from=5 GET /_search?size=5&from=10

 

 

响应中最重要的部分就是 hits 节点,包含 total 字段表示匹配的总数

同时 hits 中的 hits 数组包含了前 10 条结果

hits数组中的每个结果都包含_index、_type和文档的_id,文档的所有字段都被加入到_source字段中这意味着在搜索结果中我们将可以直接使用全部文档

 

每个节点都有一个 _score 字段,表示相关性得分,衡量了文档与查询的匹配程度,默认按照返回结果的相关性降序排列

 

max_score指的是所有文档匹配查询中_score的最大值

 

took告诉我们整个搜索请求花费的毫秒数

 

_shards节点告诉我们参与查询的分片数(total字段),有多少是成功的(successful字段),有多少的是失败的(failed字段)。通常我们不希望分片失败,不过这个有可能发生。如果我们遭受一些重大的故障导致主分片和复制分片都故障,那这个分片的数据将无法响应给搜索请求。这种情况下,Elasticsearch将报告分片failed,但仍将继续返回剩余分片上的结果

 

time_out值告诉我们查询超时与否。一般的,搜索请求不会超时。如果响应速度比完整的结果更重要,你可以定义timeout参数为10或者10ms(10毫秒),或者1s(1秒)

 

GET /_search?timeout=10ms

 

 

需要注意的是timeout不会停止执行查询,它仅仅告诉你目前顺利返回结果的节点然后关闭连接。在后台,其他分片可能依旧执行查询,尽管结果已经被发送

 






技术帖      龙潭书斋      检索      search      检索引擎      elasticsearch      搜索      返回     


京ICP备15018585号