问题描述
使用 kuzzle.collection.create('abc123','yellow-taxi',{deFinition});
在索引上创建集合。集合已创建,但未应用映射。
这是我使用的代码
const deFinition = {
mappings: {
dynamic: "true",properties: {
vendorID: {
"type": "integer"
},tpep_pickup_datetime: {
"type": "date"
},........
}
},settings: {
}
};
try {
// Creates a collection
await kuzzle.collection.create('abc123',{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: {} }
解决方法
您传递映射的方式不正确,您传递了一个包含 definition
属性的 POJO,该属性包含映射。您应该直接传递 definition
对象。
// don't
console.log({ definition }); // { definition: { mappings: ...,settings: ... } }
// do
console.log(definition); // { mappings: ...,settings: ... }
await kuzzle.collection.create('abc123','yellow-taxi',definition);
,
好的,过了一会儿我决定用几个字段构建我自己的 CSV 文件并创建一个新的映射定义。这奏效了。所以看起来我对黄色出租车集合的映射定义有问题。
kuzzle.collection.create('abc123','黄色出租车',定义);
没有给出任何关于映射问题的通知。
我对 CSV 数据的映射是错误的。