14-十四、Elasticsearch 教程: 搜索 API
本章节,我们要学习和介绍的 API
用于在 Elasticsearch
中搜索内容
我们可以通过以查询字符串作为参数或发送请求消息正文中的查询发送获取请求来进行搜索
多索引
Elasticsearch
允许我们搜索所有的索引或某些特定索引中存在的文档
例如,如果我们要搜索昵称中包含 飞
的所有文档,可以发起下面这种请求
GET http://localhost:9200/_search?pretty&q=nickname:飞
返回响应
{
"took" : 19,
"timed_out" : false,
"_shards" : {
"total" : 15,
"successful" : 15,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "user_admin",
"_type" : "user",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"nickname" : "站长",
"description" : "搜云库技术团队 ,教程 ",
"street" : "东四十条",
"city" : "Beijing",
"state" : "Beijing",
"zip" : "100007",
"location" : [
116.432727,
39.937732
],
"money" : 5201814,
"tags" : [
"PHP",
"Python"
],
"vitality" : "9.0"
}
}
]
}
}
同样,我们可以将搜索范围限制在 user
和 user_admin
索引中
GET http://localhost:9200/user,user_admin/_search?pretty&q=nickname:飞
多类型
我们还可以搜索所有类型或某种指定类型的索引中的所有文档
例如
GET http://localhost:9200/user_admin/_search?pretty&q=tags:Python
返回响应
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "user_admin",
"_type" : "user",
"_id" : "2",
"_score" : 0.2876821,
"_source" : {
"nickname" : "雅少",
"description" : "虚怀若谷",
"street" : "四川大学",
"city" : "Chengdu",
"state" : "Sichuan",
"zip" : "610044",
"location" : [
104.094537,
30.640174
],
"money" : 68023,
"tags" : [
"Python",
"HTML"
],
"vitality" : "7.8"
}
},
{
"_index" : "user_admin",
"_type" : "user",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"nickname" : "站长",
"description" : "搜云库技术团队 ,教程 ",
"street" : "东四十条",
"city" : "Beijing",
"state" : "Beijing",
"zip" : "100007",
"location" : [
116.432727,
39.937732
],
"money" : 5201814,
"tags" : [
"PHP",
"Python"
],
"vitality" : "9.0"
}
}
]
}
}
URI 搜索
许多参数都可以放在 URL 中作为查询字符串参数传递
下表就列出了这些参数
参数 | 默认值 | 说明 |
---|---|---|
q | "" | 用于指定要查询的字符串 |
lenient | false | 设置为true即可以忽略格式化错误 |
fields | 用于筛选返回结果的字段 | |
sort | 可以使用这个参数来对结果进行排序可能值有:fieldName,fieldName:asc或fieldname:desc | |
timeout | 可以使用该参数来限制搜索的时间,如果超过了该时间则只返回该时间内匹配到的结果默认为不限制 | |
terminate_after | 可以使用该参数来限制每个分片返回的文档数量,一旦达到则查询终止默认情况下,不存在terminate_after参数 | |
from | 0 | 返回结果的偏移量 |
size | 10 | 用于限制返回的结果数 |
包含请求正文的搜索
我们同样可以在请求正文中使用查询 DSL
来指定查询
而且前面我们已经使用了很多次
POST http://localhost:9200/user_admin/_search?pretty
请求正文
{
"query":{
"query_string":{
"query":"语"
}
}
}
响应内容
{
"took" : 19,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "user_admin",
"_type" : "user",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"nickname" : "站长",
"description" : "搜云库技术团队 ,教程 ",
"street" : "东四十条",
"city" : "Beijing",
"state" : "Beijing",
"zip" : "100007",
"location" : [
116.432727,
39.937732
],
"money" : 5201814,
"tags" : [
"PHP",
"Python"
],
"vitality" : "9.0"
}
}
]
}
}
希望读者能够给小编留言,也可以点击[此处扫下面二维码关注微信公众号](https://www.ycbbs.vip/?p=28 "此处扫下面二维码关注微信公众号")
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
本文著作权归作者所有,如若转载,请注明出处
转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com