Nodejs 第八十三章(ElasticSearch全文检索)

什么是ElasticSearch?

ElasticSearch 是一个开源的、分布式的搜索和分析引擎,特别擅长处理大规模的日志和文本数据。它基于 Apache Lucene 构建,提供了强大的全文本搜索功能和实时的数据分析能力。ElasticSearch 常用于日志和事件数据的实时搜索、分析以及大型文本数据的全文检索。

场景

  1. 应用程序日志分析:实时分析应用程序日志,以便快速发现和解决问题。
  2. 网站搜索:为网站提供快速的全文搜索功能,提升用户体验
  3. 地图服务:提供基于位置的搜索和导航服务

安装

1. 安装elastic

下载地址www.elastic.co/cn/download...

  1. 选择你所拥有的操作系统下载即可
  2. 解压到你喜欢的目录即可

如果你要使用你自己的java版本配置JAVA_HOME环境变量即可,如果你用Elastic自带的JDK也是可以的 目前自带的版本是21.0.2

  1. 启动运行bin目录下面的 elasticsearch 文件
  2. 修改elastic密码 执行bin 目录 下面的 elasticsearch-reset-password -u elastic -i 然后输出密码即可 例如 123456
  3. 关闭https打开 elasticSearch/config/elasticsearch.yml 修改为false

访问http://localhost:9200 即可 默认端口9200

  1. 账号是 elastic 密码是第四条你修改之后的密码 返回以下信息即可成功

2.安装 kibana

Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作,你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互

下载地址www.elastic.co/cn/download...

选择对应的操作系统即可
Kibana基于Nodejs环境开发,需要安装Nodejs 安装过的忽略

  1. 下载完成解压到你喜欢的目录即可 (解压比较慢等待即可)
  2. 解压完成运行 kibana/bin/kibana.bat 文件即可
  3. 打开之后访问 http://localhost:5601/

添加测试数据

访问测试数据

对接Node.js

安装依赖包

sh 复制代码
npm install @elastic/elasticsearch

增删改差的实现

核心概念

  1. 索引类似于关系型数据库中的数据库概念。它是一个包含文档的集合。每个索引都有一个名字,这个名字在进行搜索、更新、删除等操作时作为标识使用,其实也就是类似于数据库的database
  2. 文档(document) 文档是Elasticsearch中的基本信息单元,类似于关系型数据库中的行(row)。文档是以JSON格式存储的,每个文档包含一个或多个字段(field),字段是键值对的形式
js 复制代码
import { Client } from '@elastic/elasticsearch';
const client = new Client({
    node: 'http://localhost:9200',
    auth: {
        username: 'elastic',
        password: '123456',
    },
});
//创建索引 + 数据
const user = await client.index({
    index: 'user-data',
    document: {
        user: 1,
        age: 18,
        name: 'jack',
    }
});
//查询数据
const response = await client.get({
    index: 'user-data',
    id:user._id //id可以指定也可以让elasticsearch自动生成
});
//搜索
const result = await client.search({
    index: 'user-data', //指定索引
    query: { //查询条件
        match: {
            name: 'jack' //模糊查询
        }
    },
    size: 1 //指定返回条数
});
console.log(result.hits.hits); //打印搜索结果
//删除
await client.delete({
    index: 'user-data',
    id: user._id
});

可视化使用

sh 复制代码
# 创建索引
PUT /task-index


# 添加文档到索引
POST /task-index/_doc
{
    "id": "1",
    "title": "不是哥们",
    "description": "杰哥不要啊杰哥??????????、啊"
}


# 搜索信息 q就是query的简写
GET /task-index/_search?q="杰哥"
相关推荐
小王码农记7 分钟前
【若依】关闭当前标签页并跳转路由到其他页面
前端·javascript·vue.js
她和夏天一样热7 分钟前
【前端CSS3】CSS显示模式(黑马程序员)
前端·css·css3
豆子前端10 分钟前
[前端架构]微前端原理了解
前端·架构
落魄切图仔38 分钟前
echarts柱状选中shadow阴影背景宽度设置
前端·javascript·echarts
ZJ_.1 小时前
Node.js 使用 gRPC:从定义到实现
java·开发语言·javascript·分布式·rpc·架构·node.js
小御姐@stella1 小时前
mac如何安装nvm
node.js
阿垚啊1 小时前
列表渲染 v-for
前端·javascript·vue.js·html
铁匠匠匠1 小时前
django学习入门系列之第三点《BootSrap初了解》
前端·经验分享·笔记·python·学习·django·前端框架
前端宝哥1 小时前
Composition API VS Options API:谁才是你的最佳选择?
前端·javascript·vue.js
不露声色丶2 小时前
elementPlus表格二次封装
前端·javascript·vue.js