$ npm i egg-es-plugin --save
// config/plugin.js
exports.esPlugin = {
enable: true,
package: 'egg-es-plugin',
};
// /config/config.default.js
exports.esPlugin = {
client: {
host: 'localhost:9200', // elasticsearch 访问地址
apiVersion: '7.6', // elasticsearch 版本(一个小数点即可,即不要写精确版本,如 7.6.1 需写为 7.6)
},
};
see config/config.default.js for more detail.
案例所示是在 egg service 中调用
async findOneByES(userId) {
const { ctx } = this;
try {
const esData = await ctx.esSearch({
index: 'user',
from: 0,
size: 10,
body: {
query: {
match: {
id: userId
},
},
},
});
return esData.data[0]
} catch (error) {
throw error;
}
}
如上,我们可以通过 ctx.esSearch 方法来对 elasticsearch 中指定的索引检索数据,入参如下:
- index:索引名称,必传
- from:数据下标,类似数组索引,非必传
- size:返回数据的条数,非必传
- body:具体的 elasticsearch 查询规则,必传
经过 elasticsearch 查询,我们得到了返回的查询结果 esData,其中结构如下:
{
total: 3,
data: [{}, {}, {}]
}
- total:表示满足查询条件的数据条数
- data:本次查询返回的数据,data 恒定为数组格式