node.js + @elastic/elasticsearch 操作elasticsearch数据库

2024-04-25 18:04

本文主要是介绍node.js + @elastic/elasticsearch 操作elasticsearch数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我这边node.js 使用的是 koa2,elasticsearch是8.11.1版本

官网:https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/getting-started-js.html

一、@elastic/elasticsearch 连接 elasticsearch数据库
如果elasticsearch没有设置账号秘密 则auth就不需要了

const { Client } = require('@elastic/elasticsearch');
this.elastic = new Client({node: 'http://localhost:9200',auth: {username: 'xm',password: '123'  }
});// 另一个写法
const elastic = new Client({node: 'https://username:password@localhost:9200'
})

二、基础操作

1、创建
1)创建一条信息

this.elastic.index({index: 'testes',id: '20240425-01',body: {name: 'xiaoming',age: 22}
})

创建一条信息,id不填 系统会自动补全
注意:index 只能是小写,不能大写,否则会报错,可以 ‘test-es’命名
在这里插入图片描述

2)批量创建

await this.elastic.indices.create({index: 'tweets',operations: {mappings: {properties: {id: { type: 'integer' },text: { type: 'text' },user: { type: 'keyword' },time: { type: 'date' }}}}
}, { ignore: [400] })
const dataset = [{id: 1,text: 'If I fall, don\'t bring me back.',user: 'jon',time: new Date()},{id: 2,text: 'Winter is coming',user: 'ned',time: new Date()},{id: 3,text: 'A Lannister always pays his debts.',user: 'tyrion',time: new Date()},{id: 4,text: 'I am the blood of the dragon.',user: 'daenerys',time: new Date()},{id: 5, // change this value to a string to see the bulk response with errorstext: 'A girl is Arya Stark of Winterfell. And I\'m going home.',user: 'arya',time: new Date()}
]const operations = dataset.flatMap(doc => [{ index: { _index: 'tweets' } }, doc])const bulkResponse = await this.elastic.bulk({ refresh: true, operations })
const count = await this.elastic.count({ index: 'tweets' })
console.log(count)

等同于

await this.elastic.bulk({refresh: true,operations: [// operation to perform{ index: { _index: 'game-of-thrones' } },// the document to index{character: 'Ned Stark1',quote: 'Winter is coming1.'},{ index: { _index: 'game-of-thrones' } },{character: 'Daenerys Targaryen2',quote: 'I am the blood of the dragon2.'},{ index: { _index: 'game-of-thrones' } },{character: 'Tyrion Lannister3',quote: 'A mind needs books like a sword needs a whetstone3.'}]
});

根据官网来看,bulk其实就是批量操作,这里也可以 update、delete 等等
在这里插入图片描述

2、删除
1)删除单个

this.elastic.delete({index: 'testes',id: '20240425-01'
});

2)按条件删除,会删除符合条件的所有数据

this.elastic.deleteByQuery({index: 'tweets',query: {match: {user: 'tyrion'}}
})

在这里插入图片描述

3、更新操作

await this.elastic.update({index: 'tweets',id: 'QK5KE48BTvD5VO_sox9p',doc: {text: '111',user: '222'}
});
const document = await this.elastic.get({index: 'tweets',id: 'QK5KE48BTvD5VO_sox9p'
});

在这里插入图片描述

在这里插入图片描述

4、查询操作

1)单个查询,根据 index 和 id精准查询

const document = await this.elastic.get({index: 'tweets',id: 'QK5KE48BTvD5VO_sox9p'
});

2)查询所有,查询 index 为 testes 的所有数值

this.elastic.search({index: 'testes'
})

3)search 混合查询

GET /cartest/_search
{"size": 10,"from": 0,"query":{"bool":{"must":[{"match":{"say": "33333"}},{"regexp": {"name": ".*云.*" }},{"range": {"num": {"gte": 120,"lte": 200}}}]}}
}

在这里插入图片描述

具体查询大家可以看我这个文章:query 中的内容大致都是一致的

https://blog.csdn.net/weixin_44384273/article/details/137920183?spm=1001.2014.3001.5501

这篇关于node.js + @elastic/elasticsearch 操作elasticsearch数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935399

相关文章

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W