#node.js #elasticsearch #kuzzle
Вопрос:
Используя kuzzle.collection.create(«abc123», «желтое такси», {определение});
чтобы создать коллекцию по индексу. Коллекция создается, но сопоставления не применяются.
Вот код, который я использую
const definition = {
mappings: {
dynamic: "true",
properties: {
VendorID: {
"type": "integer"
},
tpep_pickup_datetime: {
"type": "date"
},
........
}
},
settings: {
}
};
try {
// Creates a collection
await kuzzle.collection.create('abc123', 'yellow-taxi', {definition});
// await kuzzle.collection.create('abc123', 'yellow-taxi');
console.log('Collection');
} catch (error) {
console.error(error.message);
}
Вот ссылка на документацию kuzzle, которую я использую
https://docs.kuzzle.io/sdk/js/7/controllers/collection/create/#usage
После kuzzle.create — я бегу
const mapping = await kuzzle.collection.getMapping('abc123', 'yellow-taxi');
console.log('mapping: ', mapping);
mapping: { dynamic: 'false', properties: {} }
Ответ №1:
Способ, которым вы передаете сопоставления, неверен, вы передаете POJO, содержащий definition
свойство, содержащее сопоставления. Вы должны передать definition
объект напрямую.
// don't
console.log({ definition }); // { definition: { mappings: ..., settings: ... } }
// do
console.log(definition); // { mappings: ..., settings: ... }
await kuzzle.collection.create('abc123', 'yellow-taxi', definition);
Комментарии:
1. Когда я использую await kuzzle.collection.create («abc123», «желтое такси», определение); Без скобок керли сопоставления сохраняются, но без документов. Коллекция пуста.
Ответ №2:
Хорошо, немного погодя я решил создать свой собственный CSV-файл с несколькими полями и создать новое определение сопоставлений. Это сработало. Так что, похоже, в моем определении сопоставлений для коллекции желтых такси я что-то не так понял.
kuzzle.collection.create(«abc123», «желтое такси», определение);
не давал никаких уведомлений о проблемах с сопоставлениями.
Мои сопоставления данных CSV были неправильными.