我正在尝试在MongoDB和elasticsearch之间创建映射。我正在用monososastic。当我尝试创建新的映射时,会出现以下错误。
对于解决方案,我在https://github.com/mongoosastic/mongoosastic/blob/master/lib/mongoosastic.js上添加了select
?Finclude_type_name=true
响应: '{“错误”:{“ root_cause”:[{“类型”:“ illegal_argument_exception”,“原因”:“类型 不能在放置映射请求中提供,除非 include_type_name参数设置为 true。“}],” type“:” illegal_argument_exception“,” reason“:”类型不能为 在放置映射请求中提供,除非include_type_name 参数设置为true。“},”状态“:400}',
我不知道如何在node.js / mongoosastic
中添加 include_type_name 参数设置为 true这是我的代码
function createMappingIfNotPresent (options, cb) {
const client = options.client;
const indexName = options.indexName;
const typeName = options.typeName+"?Finclude_type_name=true";
const schema = options.schema;
const settings = options.settings;
const properties = options.properties;
我有https://github.com/mongoosastic/mongoosastic/blob/master/example/blog/app.js听代码。我是node.js,MongoDB,elasticsearch中的新手。
我有一个MongoDB数据库,我正在尝试使用elasticsearch进行映射。如果要在MongoDB上添加数据,我想将两者都加入,那么它将自动添加到elasticsearch DB上。我只想使用elasticsearch搜索数据,否则我将使用MongoDB。
答案 0 :(得分:0)
我认为您不能将参数直接添加到typeName中。如果您从elasticsearch javascript客户端检查代码,您会发现它对您的类型名进行了编码,以逃避这些URI字符:Link here。您在参数中的?
将被编码,使其成为该类型的一部分。
我还没有验证这一点,但是从elasticsearch-js读取代码后,我就映射了函数,我想您可能想尝试一下:
...
return client.indices.putMapping({
index: indexName,
type: typeName,
body: completeMapping,
includeTypeName: true // Add parameter for your put mapping.
}, (err) => {
cb(err, completeMapping[typeName])
})
...