Files
elastiq/src/helpers/create_index.js

45 lines
1.1 KiB
JavaScript

import { DEFAULT_SETTING_DOCTYPE } from '../constants';
const schema = {
jobtype: { type: 'keyword' },
payload: { type: 'object', enabled: false },
priority: { type: 'byte' },
timeout: { type: 'long' },
process_expiration: { type: 'date' },
created_by: { type: 'keyword' },
created_at: { type: 'date' },
started_at: { type: 'date' },
completed_at: { type: 'date' },
attempts: { type: 'short' },
max_attempts: { type: 'short' },
status: { type: 'keyword' },
output: {
type: 'object',
properties: {
content_type: { type: 'keyword', index: false },
content: { type: 'object', enabled: false }
}
}
};
export default function createIndex(client, indexName, doctype = DEFAULT_SETTING_DOCTYPE, settings = {}) {
const indexBody = { mappings : {} };
indexBody.mappings[doctype] = { properties: schema };
const body = Object.assign({}, { settings }, indexBody);
return client.indices.exists({
index: indexName,
})
.then((exists) => {
if (!exists) {
return client.indices.create({
index: indexName,
body: body
})
.then(() => true);
}
return exists;
});
}