- Elasticsearch 教程
- Elasticsearch - 首页
- Elasticsearch - 基本概念
- Elasticsearch - 安装
- Elasticsearch - 数据填充
- 版本迁移
- Elasticsearch - API 约定
- Elasticsearch - 文档API
- Elasticsearch - 搜索API
- Elasticsearch - 聚合
- Elasticsearch - 索引API
- Elasticsearch - CAT API
- Elasticsearch - 集群API
- Elasticsearch - 查询DSL
- Elasticsearch - 映射
- Elasticsearch - 分析
- Elasticsearch - 模块
- Elasticsearch - 索引模块
- Elasticsearch - Ingest 节点
- Elasticsearch - 索引生命周期管理
- Elasticsearch - SQL访问
- Elasticsearch - 监控
- Elasticsearch - 数据汇总
- Elasticsearch - 冻结索引
- Elasticsearch - 测试
- Elasticsearch - Kibana 仪表盘
- Elasticsearch - 按字段过滤
- Elasticsearch - 数据表
- Elasticsearch - 区域地图
- Elasticsearch - 饼图
- Elasticsearch - 面积图和条形图
- Elasticsearch - 时间序列
- Elasticsearch - 词云
- Elasticsearch - 热力图
- Elasticsearch - Canvas
- Elasticsearch - 日志UI
- Elasticsearch 有用资源
- Elasticsearch - 快速指南
- Elasticsearch - 有用资源
- Elasticsearch - 讨论
Elasticsearch - 搜索API
此API用于搜索Elasticsearch中的内容。用户可以通过发送带有查询字符串作为参数的GET请求进行搜索,或者可以在POST请求的消息正文中发布查询。主要所有搜索API都是多索引、多类型的。
多索引
Elasticsearch允许我们搜索所有索引或某些特定索引中存在的文档。例如,如果我们需要搜索所有名称包含“central”的文档,我们可以按如下所示操作:
GET /_all/_search?q=city:paprola
运行上述代码后,我们将获得以下响应:
{
"took" : 33,
"timed_out" : false,
"_shards" : {
"total" : 7,
"successful" : 7,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.9808292,
"hits" : [
{
"_index" : "schools",
"_type" : "school",
"_id" : "5",
"_score" : 0.9808292,
"_source" : {
"name" : "Central School",
"description" : "CBSE Affiliation",
"street" : "Nagan",
"city" : "paprola",
"state" : "HP",
"zip" : "176115",
"location" : [
31.8955385,
76.8380405
],
"fees" : 2200,
"tags" : [
"Senior Secondary",
"beautiful campus"
],
"rating" : "3.3"
}
}
]
}
}
URI 搜索
可以使用统一资源标识符 (URI) 在搜索操作中传递许多参数:
| 序号 | 参数 & 描述 |
|---|---|
| 1 | Q 此参数用于指定查询字符串。 |
| 2 | lenient 此参数用于指定查询字符串。通过将此参数设置为true,可以忽略基于格式的错误。默认为false。 |
| 3 | fields 此参数用于指定查询字符串。 |
| 4 | sort 我们可以使用此参数获取排序结果,此参数的可能值为fieldName,fieldName:asc/fieldname:desc |
| 5 | timeout 我们可以使用此参数限制搜索时间,并且响应只包含在指定时间内的命中结果。默认情况下,没有超时。 |
| 6 | terminate_after 我们可以将响应限制为每个分片指定数量的文档,达到该数量后,查询将提前终止。默认情况下,没有terminate_after。 |
| 7 | from 要返回的命中的起始索引。默认为0。 |
| 8 | size 表示要返回的命中数。默认为10。 |
请求体搜索
我们也可以在请求体中使用查询DSL指定查询,之前的章节已经给出许多示例。这里给出一个这样的示例:
POST /schools/_search
{
"query":{
"query_string":{
"query":"up"
}
}
}
运行上述代码后,我们将获得以下响应:
{
"took" : 11,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.47000363,
"hits" : [
{
"_index" : "schools",
"_type" : "school",
"_id" : "4",
"_score" : 0.47000363,
"_source" : {
"name" : "City Best School",
"description" : "ICSE",
"street" : "West End",
"city" : "Meerut",
"state" : "UP",
"zip" : "250002",
"location" : [
28.9926174,
77.692485
],
"fees" : 3500,
"tags" : [
"fully computerized"
],
"rating" : "4.5"
}
}
]
}
}
广告