为了同步的将数据保存到mongodb以及Elasticsearch中,这里我们使用一个叫做mongoosastic的插件,如果你想使用mongoosastic,建议你阅读一下mongoose的用法
首先我们安装mongoosastic:
npm install mongoosastic -S
首先我们要做准备工作:
- 启动mongodb
- 启动eleasticearch
- 启动kibana(为了观察eleasticearch的数据)
下面的代码连接的数据库是runoob,使用集合是user。本demo保存一个name为mmmm的文档。然后观察数据库和搜索引擎的数据。
数据库连接代码如下:
var mongoose = require('mongoose')
// mongodb 数据库连接地址
const mongdbUrl = 'mongodb://localhost/runoob'
// 连接mongodb数据库
mongoose.connect(mongdbUrl)
// 获取连接对象
var db = mongoose.connection
db.on('error', console.error.bind(console, 'connect error'))
var main = {
getConnection: (callback) => {
db.on('open', () => {
console.log('连接成功')
callback(db)
})
},
closeConnection: () => {
db.close((err) => {
if (err) {
console.log('数据库关闭异常')
} else {
console.log('数据库正常关闭')
}
})
}
}
module.exports = main
具体的实现如下:
var mgc = require('./mongodbConnection')
var mongoose = require('mongoose')
var mongoosastic = require('mongoosastic')
var Schema = mongoose.Schema
var userSchema = new Schema({
name: Schema.Types.String,
age: Schema.Types.Mixed,
description: Schema.Types.String
})
userSchema.plugin(mongoosastic, {
hosts: [
'localhost:9200'
]})
var User = mongoose.model('user', userSchema)
var u = {'name': 'mmmm', age: 100, description: 'LLL'}
mgc.getConnection((db) => {
User.create(u, (err, res) => {
console.log('保存')
if (err) throw err
console.log('数据:' + res)
})
})
此时我们分别观看数据库和搜索引擎的数据。
![](https://img.haomeiwen.com/i2726392/354ae192820be062.png)
![](https://img.haomeiwen.com/i2726392/8933a59e8267fb23.png)
可以看到数据已经同时保存到了数据库和搜索引擎。
参考资料
mongoose:http://www.nodeclass.com/api/mongoose.html
mongoosastic:https://www.npmjs.com/package/mongoosastic
Elasticsearch:https://www.elastic.co/products/elasticsearch
网友评论