1. 首页
  2. elasticsearch教程

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" } } ] } }

同样,我们可以将搜索范围限制在 useruser_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 "此处扫下面二维码关注微信公众号")

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「方志朋」,公众号后台回复「666」 免费领取我精心整理的进阶资源教程
  4. JS中文网,Javascriptc中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,是给开发者用的 Hacker News,技术文章由为你筛选出最优质的干货,其中包括:Android、iOS、前端、后端等方面的内容。目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。

    本文著作权归作者所有,如若转载,请注明出处

    转载请注明:文章转载自「 Java极客技术学习 」https://www.javajike.com

    标题:14-十四、Elasticsearch 教程: 搜索 API

    链接:https://www.javajike.com/article/1257.html

« 15-十五、Elasticsearch 教程: 聚合计算
13-十三、Elasticsearch 教程: 文档 API»

相关推荐

QR code