跳到主要内容
版本:v2

LeanDB Elasticsearch 指南

LeanDB 是 LeanCloud 推出的数据库托管方案,开发者可以在「控制台 => 云引擎 => LeanDB」中创建托管在 LeanCloud 的数据库实例。这篇文章主要介绍其中的 Elasticsearch 数据库。

开发者可以在云引擎中连接到自己的 LeanDB 实例,通过 HTTP 或者 使用 Elasticsearch 官方客户端类库,访问完整的 Elasticsearch 功能。

主要特性

  • 高可用:多节点集群方案,可以容忍单节点故障。
  • 在线扩容:在线调整容量和规格,数据平滑迁移。
  • 多实例:满足更大容量或更高性能的需求。
  • 中文分词:内置中文分词插件并支持自定义词库。

实例规格

  • LeanDB Elasticsearch 提供 Elasticsearch 7.9 版本。
  • LeanDB Elasticsearch 的规格分为 5121024204840968192 几种,代表不同的运算能力。
  • 每种规格有固定的存储空间限制,如需要更多存储空间需要升级到更高的规格。
  • 具体的价格可以在控制台上点击「创建 LeanDB 实例」来查看。

在云引擎中使用

LeanDB 所在的应用的云引擎部署时,会被注入包含 Elasticsearch 连接信息的环境变量 ELASTICSEARCH_URL_<NAME>, 其中 NAME 是你在创建 LeanDB 时为它指定的名字,如果你的 LeanDB 名为 MYES 的话,就会有名为 ELASTICSEARCH_URL_MYES 的环境变量。 该环境变量的格式是 http://username:password@host:port,其中包含了所有连接 Elasticsearch 所需的信息,包括认证信息。

Node.js

在 Node.js 中你可以这样连接到 Elasticsearch:

const { Client } = require('@elastic/elasticsearch')
const client = new Client({
node: process.env.ELASTICSEARCH_URL_MYES
})

// promise API
const result = await client.search({
index: 'my-index',
body: {
query: {
match: { hello: 'world' }
}
}
})

// callback API
client.search({
index: 'my-index',
body: {
query: {
match: { hello: 'world' }
}
}
}, (err, result) => {
if (err) console.log(err)
})
  • 你需要运行 npm install @elastic/elasticsearch 来安装上面代码中用到的依赖
  • 更多的用法请参考 Elasticsearch Node.js client

中文分词

除了 elasticsearch 自带的分词器,我们还提供了 Elasticsearch ik plugin 以支持中文分词。 我们可以通过以下途径指定使用 IK 插件进行中文分词:

  1. 在搜索时,指定分词器
  2. 在创建索引时,为特定 field 指定搜索分词器
  3. 在创建索引时,指定索引的默认分词器
  4. 在创建索引时,为特定 field 指定分词器

它们的优先级依次降低,当都未指定时,会使用默认的标准分词器(standard analyzer)。具体细节及参数见 specify an analyzer

自定义词库

除此之外,自定义词库也是支持的。用户可以在控制台上传自定义词库。 词库文件要求为 UTF-8 编码,每个词单独一行,文件大小不能超过 10MB,例如:

面向对象编程
函数式编程
高阶函数
响应式设计

将其保存为文本文件,例如 dict.txt,上传即可。上传之后,分词将于 2 分钟后生效。开发者可以通过 analyze API 来测试。需要注意使用 analyze API 时要指定 index,使用 curl -X POST "localhost:9200/my-index/_analyze?pretty" 的形式。

常见问题

  • 目前 LeanDB Elasticsearch 只支持从云引擎中访问,在本地调试时无法访问。
  • 如账户欠费超过 3 天,LeanDB 及其中的数据会被彻底删除。
  • LeanDB 每天扣费,不足一天按照一天扣费。