Elasticsearch 搜索API
现在让我们从一些简单的搜索开始。
搜索参数传递有2种方法:
- URI发送搜索参数
- 请求体(request body)发送搜索参数
搜索相关的REST API可以从_search端点访问。下面的例子返回bank索引中的所有文档:
API
GET /bank/_search?q=*&sort=account_number:asc&pretty
CURL
curl -X GET "localhost:9200/bank/_search?q=*&sort=account_number:asc&pretty"
本例采用uri方式传递搜索参数:
q=*搜索索引中的所有文档sort=account_number:asc搜索结果以字段account_number升序排列pretty返回结果以漂亮的JSON格式打印
响应:
{
"took" : 55,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1000,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "bank",
"_type" : "_doc",
"_id" : "0",
"_score" : null,
"_source" : {
"account_number" : 0,
"balance" : 16623,
"firstname" : "Bradshaw",
"lastname" : "Mckenzie",
"age" : 29,
"gender" : "F",
"address" : "244 Columbus Place",
"employer" : "Euron",
"email" : "bradshawmckenzie@euron.com",
"city" : "Hobucken",
"state" : "CO"
},
"sort" : [
0
]
},
{
"_index" : "bank",
"_type" : "_doc",
"_id" : "1",
"_score" : null,
"_source" : {
"account_number" : 1,
"balance" : 39225,
"firstname" : "Amber",
"lastname" : "Duke",
"age" : 32,
"gender" : "M",
"address" : "880 Holmes Lane",
"employer" : "Pyrami",
"email" : "amberduke@pyrami.com",
"city" : "Brogan",
"state" : "IL"
},
"sort" : [
1
]
},
...
]
}
}
看一下响应中的重要字段:
took– 搜索时间(毫秒)timed_out– 搜索是否超时_shards– 搜索了多少分片,搜索分片的成功/失败计数hits– 搜索结果hits.total– 搜索命中总数信息hits.total.value- 命中总数hits.total.relation- 取值eq(等于)/gte(大于等于),表示hits.total.value与实际的搜索命中数量的关系。
hits.hits– 实际的搜索结果数组(默认为前10个文档)hits.sort- 结果排序键(如果按分数排序,则忽略)hits._score与max_score- 分数是衡量文档与搜索条件匹配程度的一个指标。分数越高,文档越相关,分数越低,文档越不相关。并不总是需要生成分数,需不需要Elasticsearch会自动判断,以避免计算无用的分数。
如果搜索结果很多,超过一定数量后,通常就不再统计,只是笼统地表示为:搜索结果超过XXXX个。hits.total的准确性由请求参数track_total_hits控制,当track_total_hits为true时,搜索时将精确地跟踪总命中数(“relationship”:“eq”)。track_total_hits默认值为10,000,意味着总命中数可以精确地跟踪到10000个文档,如果超过10000,会表示为超过10000个结果,如下所示:
"total" : {
"value" : 10000,
"relation" : "gte"
},
通过将track_total_hits显式地设置为true,可以强制进行准确计数。详细信息,请参阅request body文档。
同样的例子,使用请求体(request body)发送搜索参数:
API
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
CURL
curl -X GET "localhost:9200/bank/_search" -H 'Content-Type: application/json' -d'
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
'
可以看到,没有在URI中传递q=*,而是向_search API传递json风格的请求体,下一节中会详细讨论。
注意,一旦获得了搜索结果,Elasticsearch就会结束这次搜索,不会再维护任何服务端资源,也没有结果游标,这与其他很多平台,如SQL,不一样。
Elasticsearch 搜索API的更多相关文章
- Elasticsearch 搜索数据
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- Elasticsearch java api 基本搜索部分详解
文档是结合几个博客整理出来的,内容大部分为转载内容.在使用过程中,对一些疑问点进行了整理与解析. Elasticsearch java api 基本搜索部分详解 ElasticSearch 常用的查询 ...
- ElasticSearch查询 第一篇:搜索API
<ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...
- elasticsearch系列四:搜索详解(搜索API、Query DSL)
一.搜索API 1. 搜索API 端点地址 从索引tweet里面搜索字段user为kimchy的记录 GET /twitter/_search?q=user:kimchy 从索引tweet,user里 ...
- Elasticsearch核心技术(五):搜索API和搜索运行机制
本文将从数据存储和搜索的角度简单分析Elasticsearch的搜索运行机制,主要涉及搜索API.搜索机制.存在问题和解决方案. 4.1 Search API Search API允许用户执行一个搜索 ...
- [搜索]ElasticSearch Java Api(一) -添加数据创建索引
转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...
- 搜索引擎(Elasticsearch搜索详解)
学完本课题,你应达成如下目标: 掌握ES搜索API的规则.用法. 掌握各种查询用法 搜索API 搜索API 端点地址 GET /twitter/_search?q=user:kimchy GET /t ...
- ElasticSearch搜索介绍四
ElasticSearch搜索 最基础的搜索: curl -XGET http://localhost:9200/_search 返回的结果为: { "took": 2, &quo ...
- 搜索引擎Elasticsearch REST API学习
Elasticsearch为开发者提供了一套基于Http协议的Restful接口,只需要构造rest请求并解析请求返回的json即可实现访问Elasticsearch服务器.Elasticsearch ...
随机推荐
- CSS如何实现三列布局?如果两端固定、中间是自适应又该如何做?
使用浮动布局来实现 左侧元素与右侧元素优先渲染,分别向左和向右浮动 中间元素在文档流的最后渲染,并将 width 设为 100%,则会自动压到左右两个浮动元素的下面,随后在中间元素中再添加一个div元 ...
- swift4之String与NSString的区别与使用
String是结构体,NSString是类,这是它们的根本区别. 在 Swift 中,结构体struct是值类型,String是结构体,所以也是值类型.值类型被赋予给一个变量.常量或者被传递给一个函数 ...
- JS数据统计表 highcharts.js的运用
参考地址 http://www.runoob.com/highcharts/highcharts-column-basic.html 1.下载JS文件引入,或者用CDN function getCou ...
- 剑指offer 把数组排成最小的数 atoi和itoa,pow
pow(x,y)在#include<math.h>文件中,计算x的y次方. C++引入头文件:#include <stdlib.h> 或者 #include <cstdl ...
- leetcode347 Top K Frequent Elements
""" Given a non-empty array of integers, return the k most frequent elements. Example ...
- Centos7下 Oracle11G自动备份
1.创建备份目录: [root@Centos ~]# mkdir -p /home/oracle/backup 2.设置目录权限: [root@Centos ~]# chown -R oracle:o ...
- POJ 3233:Matrix Power Series 矩阵快速幂 乘积
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 18450 Accepted: ...
- IDEA配置Scala开发环境
1.下载scala sdk 到页面 https://www.scala-lang.org/download/2.10.5.html 下载sdk,大数据平台目前的scala版本是2.10.5,下载后解压 ...
- 关于netty配置的理解serverBootstrap.option和serverBootstrap.childOption
The parameters that we set using ServerBootStrap.option apply to the ChannelConfig of a newly create ...
- 123.ModelForm的使用
ModelForm 在我们的实例中,需要通过models.py中定义相关的模型字段,之后在forms.py中同样需要定义每个字段进行相应的验证,这样的话,我们会需要重复定义,这样的话,就相对比较麻烦, ...