## 开始搜索
将一些数据摄取到Elasticsearch索引后,您可以通过将请求发送到`_search`端点来对其进行搜索。要访问全套搜索功能,请使用Elasticsearch Query DSL在请求正文中指定搜索条件。您可以在请求URI中指定要搜索的索引的名称。
例如,以下请求检索`bank`按帐号排序的索引中的所有文档:
~~~
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
]
}
~~~
默认情况下,`hits`响应部分包含与搜索条件匹配的前10个文档:
~~~
{
"took" : 63,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value": 1000,
"relation": "eq"
},
"max_score" : null,
"hits" : [ {
"_index" : "bank",
"_type" : "_doc",
"_id" : "0",
"sort": [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"}
}, {
"_index" : "bank",
"_type" : "_doc",
"_id" : "1",
"sort": [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"}
}, ...
]
}
}
~~~
该响应还提供有关搜索请求的以下信息:
* `took`– Elasticsearch运行查询多长时间(以毫秒为单位)
* `timed_out`–搜索请求是否超时
* `_shards`–搜索了多少个分片以及成功,失败或跳过了多少个分片。
* `max_score`–找到的最相关文件的分数
* `hits.total.value`\-找到了多少个匹配的文档
* `hits.sort`\-文档的排序位置(不按相关性得分排序时)
* `hits._score`\-文档的相关性得分(使用时不适用`match_all`)
每个搜索请求都是独立的:Elasticsearch在请求中不维护任何状态信息。要翻阅搜索结果,请在您的请求中指定`from`和`size`参数。
例如,以下请求的匹配数为10到19:
~~~
GET /bank/_search
{
"query": { "match_all": {} },
"sort": [
{ "account_number": "asc" }
],
"from": 10,
"size": 10
}
~~~
既然您已经了解了如何提交基本的搜索请求,则可以开始构建比有趣的查询`match_all`。
要在字段中搜索特定术语,可以使用`match`查询。例如,以下请求搜索该`address`字段以查找地址包含`mill`或的客户`lane`:
~~~
GET /bank/_search
{
"query": { "match": { "address": "mill lane" } }
}
~~~
要执行词组搜索而不是匹配单个词,请使用`match_phrase`代替`match`。例如,以下请求仅匹配包含短语的地址`mill lane`:
~~~
GET /bank/_search
{
"query": { "match_phrase": { "address": "mill lane" } }
}
~~~
要构造更复杂的查询,可以使用`bool`查询来组合多个查询条件。您可以根据需要(必须匹配),期望(应该匹配)或不期望(必须不匹配)指定条件。
例如,以下请求在`bank`索引中搜索属于40岁客户的帐户,但不包括居住在爱达荷州(ID)的任何人:
~~~
GET /bank/_search
{
"query": {
"bool": {
"must": [
{ "match": { "age": "40" } }
],
"must_not": [
{ "match": { "state": "ID" } }
]
}
}
}
~~~
布尔查询中的每个`must`,`should`和`must_not`元素称为查询子句。文档满足每个条款`must`或`should`条款的标准的程度有助于文档的*相关性得分*。分数越高,文档就越符合您的搜索条件。默认情况下,Elasticsearch返回按这些相关性分数排名的文档。
`must_not`子句中的条件被视为*过滤器*。它会影响文档是否包含在结果中,但不会影响文档的评分方式。您还可以显式指定任意过滤器,以基于结构化数据包括或排除文档。
例如,以下请求使用范围过滤器将结果限制为余额在20,000美元到30,000美元(含)之间的帐户。
~~~
GET /bank/_search
{
"query": {
"bool": {
"must": { "match_all": {} },
"filter": {
"range": {
"balance": {
"gte": 20000,
"lte": 30000
}
}
}
}
}
}
~~~
- Elasticsearch简介
- 数据输入:文档和索引
- 信息输出:搜索和分析
- 可扩展性和弹性
- Elasticsearch入门
- 启动并运行Elasticsearch
- 索引文件
- 开始搜索
- 使用汇总分析结果
- 从这里开始
- 设置Elasticsearch
- 安装Elasticsearch
- 从Linux或MacOS上的存档安装Elasticsearch
- 在Windows上安装Elasticsearch
- 使用Debian软件包安装Elasticsearch
- 使用RPM安装Elasticsearch
- 使用Windows MSI安装程序安装Elasticsearch
- 使用Docker安装Elasticsearch
- 使用Homebrew在macOS上安装Elasticsearch
- 配置Elasticsearch
- 设置JVM选项
- 安全设定
- 记录配置
- 审核设置
- 跨集群复制设置
- 转换设定
- 索引生命周期管理设置
- 许可设置
- 机器学习设置
- 监控设定
- 保护设置
- SQL访问设置
- 观察者设置
- 重要的Elasticsearch配置
- path.data 和 path.logs
- cluster.name
- node.name
- network.host
- 发现和集群形成设置
- 设置堆大小
- JVM堆转储路径
- GC记录
- 临时目录
- JVM致命错误日志
- 重要系统配置
- 配置系统设置
- 禁用交换
- 文件描述符
- 虚拟内存
- 线程数
- DNS缓存设置
- JNA临时目录未装入 noexec
- 引导检查
- 堆大小检查
- 文件描述符检查
- 内存锁检查
- 最大线程数检查
- 最大文件大小检查
- 虚拟内存最大大小检查
- 最大地图计数检查
- 客户端JVM检查
- 使用串行收集器检查
- 系统调用过滤器检查
- OnError和OnOutOfMemoryError检查
- 抢先检查
- G1GC检查
- 所有权限检查
- 发现配置检查
- 启动Elasticsearch
- 停止Elasticsearch
- 将节点添加到集群
- 全集群重启和滚动重启
- 设置X-Pack
- 配置X-Pack Java客户端
- 引导程序检查X-Pack
- 升级Elasticsearch
- 滚动升级
- 完整集群重新启动升级
- 升级前重新索引
- 重新索引到位
- 从远程群集重新索引
- 集合
- 度量聚合
- 平均聚合
- 加权平均聚合
- 基数聚合
- 扩展统计汇总
- 地理边界聚合
- 地心聚集
- 最大聚集
- 最小集合
- 百分位数汇总
- 百分数排名汇总
- 脚本式指标聚合
- 统计汇总
- 字符串统计汇总
- 总和
- 热门合集
- 价值计数汇总
- 中位数绝对偏差汇总
- 桶聚合
- 邻接矩阵汇总
- 自动间隔日期直方图聚合
- 子集聚集
- 复合聚集
- 日期直方图汇总
- 日期范围汇总
- 多元化的采样器聚合
- 筛选器汇总
- 筛选汇总
- 地理距离汇总
- GeoHash网格聚合
- GeoTile网格聚合
- 全局聚合
- 直方图聚合
- IP范围汇总
- 缺少聚合
- 嵌套聚合
- 父级汇总
- 范围汇总
- rare terms 聚集
- 反向嵌套聚合
- 采样器聚合
- 重要术语汇总
- 重要的文字汇整
- 术语汇总
- 铲斗范围字段的精妙之处
- 管道聚合
- 平均存储桶聚合
- 导数聚合
- 最大存储桶聚合
- 最小存储桶聚合
- 总和桶聚合
- 统计数据桶汇总
- 扩展的统计数据桶聚合
- 百分位桶聚合
- 查询DSL
- 查询和过滤上下文
- 跨集群搜索
- 脚本编写
- 如何使用脚本
- 映射
- 删除映射类型
- 文字分析
- 文字分析总览
- 模组
- 发现和集群形成
- 索引模块
- 分析
- 摄取节点
- 管道定义
- 管理索引生命周期
- 索引总览
- SQL访问
- SQL总览
- 监控集群
- 监控总览
- 冻结指标
- 最佳实务
- 汇总或转换数据
- 汇总历史数据
- 设置集群以实现高可用性
- 备份集群
- 快照和还原
- 注册资料库
- 保护集群
- 安全概述
- 警报群集和索引事件
- Watcher入门
- 命令行工具
- 弹性搜索证书
- 如何
- 一般建议
- 专业术语
- REST API
- API约定
- 发布要点
- 7.6.0
- 重大变化
- 7.6
- 发行说明
- Elasticsearch版本7.6.2