Elasticsearch 基于 URL 的搜索请求
程序员文章站
2022-05-07 14:09:54
背景 Elasticsearch 不像关系型数据库,没有简易的 SQL 用来查询数据,只能通过调用 RESTful API 实现查询。大体上查询分为两种,基于 URL 的和基于请求主体的。基于 URL 的方式比较简单清晰,用得较多,在这简单记录下。 基本模式 基于 URL 的搜索请求基本模式如上图所 ......
背景
elasticsearch 不像关系型数据库,没有简易的 sql 用来查询数据,只能通过调用 restful api 实现查询。大体上查询分为两种,基于 url 的和基于请求主体的。基于 url 的方式比较简单清晰,用得较多,在这简单记录下。
基本模式
基于 url 的搜索请求基本模式如上图所示:
1,是一个 linux curl 命令,利用命令行的方式发起一个 http 命令;
2,则是url路径,指明搜索范围,比如上图所指的搜索范围就是 get-together 索引下的 group 类型;
3,是 _search 端点(endpoint),表明这是一个搜索请求;
4,传入一个 pretty参数,美化(格式化)返回结果,非必填。
运行该条命令后,会查询出get-together 索引下的 group 类型下的所有文档。
q
q 参数用于指定搜索的关键词
# 搜索 get-together 索引,group 类型中,包含“elasticsearch”的文档 curl -x get 'localhost:9200/get-together/group/_search?pretty&q=elasticsearch' # 搜索 get-together 索引,group 类型中,属性 description 包含“elasticsearch”的文档 curl -x get 'localhost:9200/get-together/group/_search?pretty&q=description:elasticsearch'
from & size
假设某个搜索请求会返回一大批文档,出于网络性能的考虑,往往不需要全部返回,所以可以使用 from,size 来达到限制结果集数量的目的。from 指定起始,size 指定起始后多少条文档,比如 from=0,size=2,表明从第0条开始返回,最多返回两条文档,如下所示。
curl -x get 'localhost:9200/get-together/group/_search?pretty&from=0&size=2'
size如果不指定,默认为10
sort
对结果排序,默认是降序,可以利用 asc,desc 表明是升序还是降序,另外除了对文档属性值进行排序,还可以对文档的评分进行排序
# 对 created_on 字段进行排序,利用asc,desc指明是升序还是降序 curl -x get 'localhost:9200/get-together/group/_search?pretty&sort=created_on:asc' curl -x get 'localhost:9200/get-together/group/_search?pretty&sort=created_on:desc' # 对文档的评分进行排序 curl -x get 'localhost:9200/get-together/group/_search?pretty&q=elasticsearch&sort=_score'
_source
或出于网络性能,或出于结果清晰,往往只关注文档的某几个属性。我们可以使用 _source 来指明只返回哪些属性
curl -x get 'localhost:9200/get-together/group/_search?pretty&_source=organizer,description'
引用
1.《elasticsearch 实战》- radu gheorghe
推荐阅读
-
python采集百度搜索结果带有特定URL的链接代码实例
-
基于Vuejs的搜索匹配功能实现方法
-
ElasticStack学习(十):深入ElasticSearch搜索之QueryFiltering、多/单字符串的多字段查询
-
基于express中路由规则及获取请求参数的方法
-
htaccess 将所有请求重定向到某个URL地址的规则
-
基于jquery,ajax请求及自我终止的函数封装。
-
基于Jquery和Css3代码制作可以缩放的搜索框
-
Android 基于ksoap2的webservice请求的学习
-
安装ElasticSearch搜索工具并配置Python驱动的方法
-
[TextMatch框架] 基于召回和排序的文本搜索