1
0
Fork 0
mirror of synced 2024-10-04 03:54:37 +13:00
budibase/packages/server/src/integrations/elasticsearch.js
2020-11-26 21:23:20 +00:00

44 lines
895 B
JavaScript

const { Client } = require("@elastic/elasticsearch")
const ELASTICSEARCH_OPTIONS = {
url: {
type: "string",
required: true,
default: "localhost",
},
index: {
type: "string",
required: true,
},
query: {
type: "json",
required: true,
},
}
class ElasticSearchIntegration {
constructor(config) {
this.config = config
this.client = new Client({ node: config.url })
}
async query() {
try {
const result = await this.client.search({
index: this.config.index,
body: JSON.parse(this.config.query),
})
return result.body.hits.hits.map(({ _source }) => _source)
} catch (err) {
console.error("Error querying elasticsearch", err)
throw err
} finally {
await this.client.close()
}
}
}
module.exports = {
schema: ELASTICSEARCH_OPTIONS,
integration: ElasticSearchIntegration,
}