Elastic Search权威指南 第三章 搜索
2017-08-20 18:31
225 查看
1. 空搜索
最基础的搜索API,没有任何参数,返回集群 索引 空格中所有的文档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 //是否超时 }
timeout参数的意义
设置:
GET /_search?timeout=10ms
意义:
将返回超时时间之前搜索到的数据,但是集群里还是会完成整个检索过程,即使响应已经返回
2. 多索引多类型的搜索
/_search 搜索整个集群 /gb/_search 在gb索引中搜索 /gb,us/_search 你猜 /g*,u*/_search 在g u开头的索引中搜索 /gb/user/_search 在gb索引中user类型下搜索 /gb,us/tweet,user/_search 你猜 /_all/user,tweet/_search 在所有索引中的user,tweet类型下搜索
3. 分页
几个参数:size:每页文档个数 默认值10
from:偏移量
每页十个数据,查看前三页
GET /_search GET /_search?size=10?from=10 GET/_search?size=10?from=20
注意:应该避免一次性分页太深或者所有太多的数据
**原因:**_search命令返回的数据都是经过排序的,排序的过程和外排序很像
比如说检索第一页数据,那么所有涉及到的分片都会把自己分片上符合条件的前十个文档进行排序,然后返回给请求结点,请求结点再将所有分片返回来的十个文档进行排序,得到前十个。
但是现在检索第1000页数据,那么所有的分片就必须检索出自己分片上排名前1000*10个数据,然后返回给请求结点。请求结点拿着n*1000*10个文档,排序出第10000到第10010个文档,剩余的文档就会进行舍弃!!!
可以分析出,在分布式的系统中,排序结果的花费随着分页的增长成倍的增长,所以一般在分布式的系统中,应该避免大量对结果排序的请求。但是也可以通过特定的技术,实现高效的检索大量数据。
4. 简易搜索
GET /_all/tweet/_search?q=tweet:elasticsearch
相关文章推荐
- Elastic Search权威指南 第七章 分布式搜索
- kafka权威指南 第三章第3节 创建Producer
- VUE权威指南-第三章 指令
- HTTP权威指南-第三章-HTTP报文自己理解
- 初窥javaScrit权威指南,第三章类型、值和变量(2)
- [JQ权威指南]搜索插件AutoComplete
- Elastic Search权威指南 第一章 ES基础概念
- HTML5权威指南之—第三章
- Elastic Search权威指南 第二章 分布式文档存储的过程
- Elastic Search权威指南 第四章 映射与分析
- Elastic Search权威指南 第五章 结构化查询
- HTML5权威指南之—第三章
- Asterisk权威指南/第三章 安装Asterisk
- JS 权威指南 第一部分 核心JS 第三章 数据类型和值
- 初窥javaScrit权威指南,第三章类型、值和变量(1)
- Squid中文权威指南 第三章(编译和安装)
- Jenkins 权威指南(中文版) 第三章 Jenkins的介绍
- Elasticsearch: 权威指南 » 深入搜索 » 多字段搜索 » 多数字段 good
- 第三章 创造平台——Quartus II 11.0 套件安装指南
- Yii2权威指南中文版及众包翻译平台