🐂 Integrated elasticsearch search for issues in volumes with BullMQ

This commit is contained in:
2022-02-01 09:32:56 -08:00
parent 6bbfcf7603
commit 2c9bd55080
6 changed files with 517 additions and 14 deletions

View File

@@ -18,6 +18,8 @@ const client = new Client({
import { DbMixin } from "../mixins/db.mixin";
import Comic from "../models/comic.model";
import { refineQuery } from "filename-parser";
import { filter } from "lodash";
console.log(client);
@@ -38,15 +40,34 @@ export default class SettingsService extends Service {
searchComic: {
rest: "POST /searchComic",
params: {},
async handler(ctx: Context<{}>) {
Comic.esSearch({
query_string: {
query: "batman",
timeout: 400000,
async handler(
ctx: Context<{ queryObject: {
issueName: string,
issueNumber: string,
} }>
) {
console.log(ctx.params);
return Comic.esSearch({
query: {
match: {
"rawFileDetails.name": {
query: ctx.params.queryObject.issueName,
operator: "or",
fuzziness: "AUTO",
},
},
},
}).then(function (results) {
// results here
console.log(results.body.hits.hits);
results.body.hits.hits.forEach((item) => console.log(item._source))
const foo = results.body.hits.hits.map((hit) => {
const parsedFilename = refineQuery(hit._source.rawFileDetails.name);
if(parsedFilename.searchParams.searchTerms.number === parseInt(ctx.params.queryObject.issueNumber, 10)) {
return hit;
}
});
return filter(foo, null);
});
},
},