简介
sails-elastic-api 是一款 npm 包,用于将 Elasticsearch 和 Sails 结合起来,提供简单的 RESTful API。使用该包,我们可以快速建立一个无需编写复杂查询语句的 Elasticsearch API。
使用方法
安装
我们可以通过 npm 安装 sails-elastic-api,使用如下命令即可:
npm install sails-elastic-api --save
配置
sails-elastic-api 配置非常简单,我们只需要在 Sails 项目中的 config
文件夹下创建一个名为 elastic.js
的配置文件,并根据下面的模板填入正确的信息。
-- -------------------- ---- ------- ---------------------- - - ----- ----------------- -- ------------- -- ------- --- -- --- ------------ ----- --- -- ---- ----- -------- ------------------- ------ --- -- ----- ------ --- -- --------------- --------- --- -- ------ ------------ --- -- ----------- -------------- ----- -- -------- -------------- ----- -- ----------- ----------- ------ -- -------- ------ ----- -- -------- --
使用
创建 API
我们可以通过 Sails 命令来创建一个 sails-elastic-api 的 API,例如:
sails generate api user
这将会生成一个名为 user
的 API,然后我们只需要在 userController.js
中添加以下代码即可:
module.exports = require('sails-elastic-api')('user');
这样就创建好了一个默认的 RESTful API,包含以下几个请求:
- GET /user: 获取所有文档
- GET /user/:id: 根据 ID 获取文档
- POST /user: 创建文档
- PUT /user/:id: 更新文档
- DELETE /user/:id: 删除文档
查询文档
sails-elastic-api 内置了几个查询参数,可以非常方便地进行查询。
filter
filter
参数可以用于过滤文档。例如,我们可以搜索年龄在 20 到 30 岁之间的用户:
GET /user?filter=[{"range":{"age":{"gte":20,"lte":30}}}]
from 和 size
from
和 size
参数可以用于分页。例如,我们可以查询第 11 到 20 条记录:
GET /user?from=10&size=10
sort
sort
参数可以用于排序。例如,我们可以按照年龄升序排列:
GET /user?sort=[{"age":{"order":"asc"}}]
query
query
参数可以用于搜索。例如,我们可以搜索姓为 Smith 的用户:
GET /user?q=lastName:Smith
其他参数
sails-elastic-api 还支持 fields
, scriptFields
, stats
, suggest
, facets
和 highlight
等其他参数,具体用法可以查看 官方文档。
示例代码
下面是一个简单的示例,使用 sails-elastic-api 实现了一个搜索电影的 API。
-- -------------------- ---- ------- -- ---------------- --------------------- - - ---- -------- ---------------------- -- -- ---------------------------------- -------------- - -------------------------------------- -- ----------------- ---------------------- - - ----- ----------------- ------ --------- ------ -------- --------- - ------ - ----------- - ------ - ----- ------ -- ----- - ----- --------- -- ------ - ----- --------- -- --------- - ----- ------ -- ------ - ----- ------ - - - - -- -- -------- ----- ------- - ----------------------------------------- ----- ------ - ----------------------------- ----------------------------------------- - --------- ----------------------- -- ------------ -- ----------------------
这样我们就可以访问 GET /movie 接口来搜索电影了,例如:
GET /movie?q=title:The%20Shawshank%20Redemption
以上代码将返回电影名为 The Shawshank Redemption 的电影信息。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ad581e8991b448d86ee