欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Elasticsearch 基于 URL 的搜索请求

程序员文章站 2022-05-07 14:09:54
背景 Elasticsearch 不像关系型数据库,没有简易的 SQL 用来查询数据,只能通过调用 RESTful API 实现查询。大体上查询分为两种,基于 URL 的和基于请求主体的。基于 URL 的方式比较简单清晰,用得较多,在这简单记录下。 基本模式 基于 URL 的搜索请求基本模式如上图所 ......

背景

elasticsearch 不像关系型数据库,没有简易的 sql 用来查询数据,只能通过调用 restful api 实现查询。大体上查询分为两种,基于 url 的和基于请求主体的。基于 url 的方式比较简单清晰,用得较多,在这简单记录下。

 

基本模式

Elasticsearch 基于 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