Elasticsearch 的检索与返回
2015-08-27 22:05:33 最后更新: 2015-11-02 18:09:29 访问数量:1724
2015-08-27 22:05:33 最后更新: 2015-11-02 18:09:29 访问数量:1724
最基本的搜索就是空搜索,没有指定任何的查询条件,返回所有文档:
响应内容为:
有时,你可能想搜索一个或几个自定的索引或类型,我们能通过定义URL中的索引或类型达到这个目的
请求 | 意义 |
/_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 |
下面的请求可以指定返回结果的数目:
响应中最重要的部分就是 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秒)
需要注意的是timeout不会停止执行查询,它仅仅告诉你目前顺利返回结果的节点然后关闭连接。在后台,其他分片可能依旧执行查询,尽管结果已经被发送
欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤