当前位置: 首页 > news >正文

【Nest 极速指南】应用篇之 ElasticSearch

【Nest 极速指南】应用篇之 ElasticSearch

一俢关注

0.912019.07.06 08:10:12字数 231阅读 88

Nest 官方提供了一套 ElasticSearch 模块,来解决它与 ElasticSearch 服务器之间的交互。这篇文章你将学习到:

  • 安装
  • 导入模块
  • 创建服务
    • 使用 ElasticsearchService 查询数据
  • 向外提供 RESTful 服务

安装

还是老规矩:

npm i --save @nestjs/elasticsearch elasticsearch @types/elasticsearch
OR
yarn add @nestjs/elasticsearch elasticsearch @types/elasticsearch

导入模块

安装完成后,我们需要将 ElasticsearchModule 导入到 AppModule

// app.module.ts

import { Module } from '@nestjs/common';
import { ElasticsearchModule } from '@nestjs/elasticsearch';

@Module({
    imports: [
        ElasticsearchModule.register({
            host: 'localhost:9200',
            log: 'trace',
        }),
    ],
})
export class AppModule { }

创建服务

我们创建一个搜索服务,并将 ElasticsearchService 注入到服务中使用相关查询功能:

// search.service.ts

import { ElasticsearchService } from '@nestjs/elasticsearch';
import { Injectable } from '@nestjs/common';

@Injectable()
export class SearchService {
    constructor(private readonly elasticsearchService: ElasticsearchService) { }

    async search<T>(params) {
        return await this.elasticsearchService.getClient().search<T>(params);
    }
}

Elasticsearch 相关的搜索功能,我们可以去相关网站上查询,它的 DSL 也可以从 Google 上搜索到。

向外提供 RESTful 服务

最后,我将这个服务通过 SearchController 暴露成 RESTful 接口:

// search.controller.ts

import { Controller, Get } from '@nestjs/common';
import { SearchService } from './search.service';

@Controller('search')
export class SearchController {
    constructor(
        private readonly searchService: SearchService,
    ) { }

    @Get()
    search() {
        return this.searchService.search({
            index: 'test_alias',
            body: {
                from: 0,
                size: 10,
            }
        });
    }
}

当然,这些 Service、Controller 需要注册到相关的 Module 中去:

// app.module.ts

import { Module } from '@nestjs/common';
import { SearchService } from './search.service';
import { SearchController } from './search.controller';
import { ElasticsearchModule } from '@nestjs/elasticsearch';

@Module({
    imports: [
        ElasticsearchModule.register({
            host: '10.5.11.86:9200',
            log: 'trace',
        }),
    ],
    controllers: [SearchController],
    providers: [SearchService],
})
export class AppModule { }

这样,启动并访问 localhost:3000/search,就大功告成了!

相关文章:

  • next 微服务
  • 服务器拉取git代码
  • 专用来回TOO OLD的用的火星帖,今天翻出来又再感叹一下!
  • [技术娱乐]How to make love
  • [Nginx]反向代理Node将3000端口访问转换成80端口
  • nginx报错nginx: [error] open() “/run/nginx.pid” failed (2: No such file or directory)
  • 大连出现今年首次浮尘天气 全市大气重度污染
  • Nginx重启时提示nginx: [emerg] bind() to 0.0.0.0解决方法 老蒋 发布于 2019-06-03 分类:运维笔记 评论(0) 2000+站长交流QQ群: 59
  • 个人签名备份一下
  • create-react-app安装react项目,yurn一直报错 create-react-app安装react项目,yurn一直报错,错误如下图
  • 时空数据模型简介
  • mysql 5.7.18版本安装说明
  • mysql 5.7.28版本安装说明
  • 被人点名骂了一通
  • 浏览器数据库 IndexedDB 入门教程
  • 2017 前端面试准备 - 收藏集 - 掘金
  • golang 发送GET和POST示例
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • RxJS: 简单入门
  • 百度地图API标注+时间轴组件
  • 观察者模式实现非直接耦合
  • 使用 QuickBI 搭建酷炫可视化分析
  • 运行时添加log4j2的appender
  • Semaphore
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • $.each()与$(selector).each()
  • (done) 两个矩阵 “相似” 是什么意思?
  • (LeetCode C++)盛最多水的容器
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (四)Linux Shell编程——输入输出重定向
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net core 连接数据库,通过数据库生成Modell
  • .net core 依赖注入的基本用发
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET面试题(二)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • [.net]官方水晶报表的使用以演示下载
  • []C/C++读取串口接收到的数据程序
  • [20171113]修改表结构删除列相关问题4.txt
  • [APIO2012] 派遣 dispatching
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C\C++]读入优化【技巧】
  • [CentOs7]iptables防火墙安装与设置
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态
  • [Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率