《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.19.Elasticsearch语言开发(Python/Nodejs/Java)——3.5.19.2.Elasticsearch语言开发(Node.js)(上) https://developer.aliyun.com/article/1226593
三、配置和初始化
1. 环境准备
Node.js v12.18.x、ES 7.10,本地启动并监听 9200 端口。
2. 工程准备
安装对应的 elasticsearch 依赖包版本:
npm install @elastic/elasticsearch@7.10.0
或
yarn add @elastic/elasticsearch@7.10.0
3. 连接 ES
Node.js 客户端支持多种认证方式的连接:
l Elastic Cloud
l ApiKey
l Bearer token
l Basic
l SSL
l CA 指纹
当然也可以支持不开启认证集群情况下的连接方式,以连接本地集群为例:
const { Client } = require('@elastic/elasticsearch'); const client = new Client({ node: 'http://localhost:9200' });
四、API 示例
在开始 API 示例之前梳理一下示例要实现的功能:
l 判断索引是否存在
l 创建空索引
l 自定义 Mapping
l 插入一条数据
l 批量插入数据
l 更新数据
l 查询关键词
l 执行聚合操作
l 删除索引
以下示例均采用 Promise 形式:
1. Exists API
用于判断索引是否存在:
client.indices .exists({ index: 'author-index', }) .then(({ body }) => { console.log(JSON.stringify(body)); }) .catch(console.error);
2. Index API
存在两种创建索引方式:
l 第一种,创建空索引,手动添加 Mapping
l 第二种,直接创建索引,ES 根据数据的格式生成出 Mapping
通过 Node.js 创建空索引的方式:
client.indices .create({ index: 'author-index', }) .then(({ body }) => { console.log(JSON.stringify(body)); }) .catch(console.error);
直接创建索引的方式:
client .index({ index: 'author-index', // 因 type 在 ES 7.0 被废弃,也可以不填写 type type: '_doc', id: 0, body: { author: 'John', article: 'Everything has its time and that time must be watched.', age: 10, interests: ['sports', 'music'], createTime: '2021-11-15', }, }) .then(({ body }) => { console.log(JSON.stringify(body)); }) .catch(console.error);
《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.19.Elasticsearch语言开发(Python/Nodejs/Java)——3.5.19.2.Elasticsearch语言开发(Node.js)(下) https://developer.aliyun.com/article/1226587