Skip to content
This repository was archived by the owner on Jan 19, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ This plugin is compatible with Elasticsearch version 2,5,6 and 7.
mongoose-elasticsearch-xp requires:

- mongoose 4.9.0, 5.0.0 or later
- elasticsearch 2.0, 5.0, 6.0, 7.0 or later
- @elastic/elasticsearch 7.0 or later

## Why this plugin?

Expand Down Expand Up @@ -170,7 +170,7 @@ User
}
}
})
.then(function (results) {
.then(function ({ body }) {
// results here
});
```
Expand Down Expand Up @@ -198,7 +198,7 @@ MyModel.plugin(mexp, {
Also, you can re-use an existing Elasticsearch `Client` instance

```javascript
var esClient = new elasticsearch.Client({host: 'localhost: 9200'});
var esClient = new Client({node: 'http://localhost:9200'});

MyModel.plugin(mexp, {
client: esClient
Expand Down Expand Up @@ -615,7 +615,7 @@ Person
}
}
})
.then(function (results) {
.then(function ({ body }) {
// all the people who fit the age group are here!
});

Expand Down
17 changes: 10 additions & 7 deletions lib/bulker.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,17 @@ function Bulker(client, options) {
clearTimeout(timeout);
if (len) {
flushing = true;
client.bulk({ body: buffer }, err => {
flushing = false;
if (err) {
self.emit('error', err);
} else {
self.emit('sent', len);
client.bulk(
{ body: buffer },
(err, { body, statusCode, headers, warnings }) => {
flushing = false;
if (err) {
self.emit('error', err);
} else {
self.emit('sent', len);
}
}
});
);
buffer = [];
}
};
Expand Down
31 changes: 18 additions & 13 deletions lib/client.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
'use strict';

const elasticsearch = require('elasticsearch');
const { Client } = require('@elastic/elasticsearch');

module.exports = function(options) {
const opts = {};
let opts = options;

if (Array.isArray(options.hosts)) {
opts.host = options.hosts;
} else {
opts.host = {
host: options.host || '127.0.0.1',
port: options.port || 9200,
protocol: options.protocol || 'http',
auth: options.auth || null,
keepAlive: false,
};
opts = options.hosts;
}
const newOpts = {
node: `${opts.protocol || 'http'}://${opts.host ||
'127.0.0.1'}:${opts.port || 9200}`,
};
newOpts.auth = opts.auth || null;

opts.log = options.log || null;
const client = new Client(newOpts);

return new elasticsearch.Client(opts);
if (opts.log) {
client.on('error', (err, result) => {
if (err) {
opts.log(err);
}
});
}

return client;
};
100 changes: 64 additions & 36 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,11 @@ function createMapping(settings, callback, version) {

esOptions.client.indices.exists(
{ index: esOptions.index },
(err, exists) => {
(err, { body }) => {
if (err) {
return reject(err);
}
if (exists) {
if (body) {
const putMappingOpts = {
index: esOptions.index,
type: esOptions.type,
Expand All @@ -147,7 +147,13 @@ function createMapping(settings, callback, version) {
}
return esOptions.client.indices.putMapping(
putMappingOpts,
(err, result) => (err ? reject(err) : resolve(result))
(err, { body }) => {
if (err) {
reject(err);
} else {
resolve(body);
}
}
);
}
const createIndexOpts = {
Expand All @@ -162,23 +168,33 @@ function createMapping(settings, callback, version) {
createIndexOpts.body.settings.number_of_shards =
settings.number_of_shards || 5;
}
return esOptions.client.indices.create(createIndexOpts, err => {
if (err) {
reject(err);
return;
return esOptions.client.indices.create(
createIndexOpts,
(err, { body }) => {
if (err) {
reject(err);
return;
}
const putMappingOpts = {
index: esOptions.index,
type: esOptions.type,
body: mapping,
};
if (version === 7) {
putMappingOpts.include_type_name = true;
}
esOptions.client.indices.putMapping(
putMappingOpts,
(err, { body }) => {
if (err) {
reject(err);
} else {
resolve(body);
}
}
);
}
const putMappingOpts = {
index: esOptions.index,
type: esOptions.type,
body: mapping,
};
if (version === 7) {
putMappingOpts.include_type_name = true;
}
esOptions.client.indices.putMapping(putMappingOpts, (err, result) =>
err ? reject(err) : resolve(result)
);
});
);
}
);
});
Expand Down Expand Up @@ -208,8 +224,8 @@ function refresh(options, callback) {
{
index: esOptions.index,
},
(err, result) => {
setTimeout(() => (err ? reject(err) : resolve(result)), refreshDelay);
(err, { body }) => {
setTimeout(() => (err ? reject(err) : resolve(body)), refreshDelay);
}
);
});
Expand Down Expand Up @@ -246,11 +262,11 @@ function count(query, options, callback) {
} else {
params.body = query.query ? query : { query };
}
esOptions.client.count(params, (err, result) => {
esOptions.client.count(params, (err, { body }) => {
if (err) {
reject(err);
} else {
resolve(countOnly ? result.count : result);
resolve(countOnly ? body.count : body);
}
});
});
Expand Down Expand Up @@ -292,20 +308,20 @@ function search(query, options, callback) {
if (hydrate) {
params._source = false;
}
esOptions.client.search(params, (err, result) => {
esOptions.client.search(params, (err, { body }) => {
if (err) {
reject(err);
return;
}

if (!hydrate && !idsOnly) {
resolve(result);
resolve(body);
return;
}

const isObjectId = utils.getType(self.schema.paths._id) === 'objectid';

const ids = result.hits.hits.map(hit =>
const ids = body.hits.hits.map(hit =>
isObjectId ? mongoose.Types.ObjectId(hit._id) : hit._id
);

Expand All @@ -318,8 +334,8 @@ function search(query, options, callback) {
const opts = hydrate.options || null;
const docsOnly = hydrate.docsOnly || false;

if (!result.hits.total) {
resolve(docsOnly ? [] : result);
if (!body.hits.total) {
resolve(docsOnly ? [] : body);
return;
}

Expand All @@ -336,13 +352,13 @@ function search(query, options, callback) {
userByIds[user._id] = user;
});
if (docsOnly) {
result = ids.map(id => userByIds[id]);
body = ids.map(id => userByIds[id]);
} else {
result.hits.hits.forEach(hit => {
body.hits.hits.forEach(hit => {
hit.doc = userByIds[hit._id];
});
}
return resolve(result);
return resolve(body);
});
});
});
Expand Down Expand Up @@ -396,7 +412,13 @@ function synchronize(conditions, projection, options, callback) {
bulker.removeListener('sent', onSent);
esOptions.client.indices.refresh(
{ index: esOptions.index },
(err, result) => (err ? reject(err) : resolve(result))
(err, { body }) => {
if (err) {
reject(err);
} else {
resolve(body);
}
}
);
}

Expand Down Expand Up @@ -507,13 +529,13 @@ function _indexDoc(id, body, esOptions, resolve, reject, update) {
id: id.toString(),
body: update ? { doc: body } : body,
},
(err, result) => {
(err, { body }) => {
if (update && err && err.status === 404) {
_indexDoc(id, body, esOptions, resolve, reject);
} else if (err) {
reject(err);
} else {
resolve(result);
resolve(body);
}
}
);
Expand Down Expand Up @@ -553,7 +575,13 @@ function unsetFields(fields, callback) {
id: self._id.toString(),
body,
},
(err, result) => (err ? reject(err) : resolve(result))
(err, { body }) => {
if (err) {
reject(err);
} else {
resolve(body);
}
}
);
});
}
Expand All @@ -574,7 +602,7 @@ function removeDoc(callback) {
type: esOptions.type,
id: self._id.toString(),
},
err => {
(err, { body }) => {
if (err) {
reject(err);
} else {
Expand Down
Loading