我正在邮递员中创建映射索引,并在下面收到错误。 我正在尝试创建一个索引,该索引将使用我创建的index.js函数与我的弹性搜索Firebase服务器通信。可能是什么问题?
这是我的代码
"mappings":{
"properties":{
"city":{
"type": "text"
},
"contact_email":{
"type": "text"
},
"country":{
"type": "text"
},
"description":{
"type": "text"
},
"image":{
"type": "text"
},
"post_id":{
"type": "text"
},
"state_province":{
"type": "text"
},
"title":{
"type": "text"
}
}
}
}
这是index.js函数的代码
const functions = require('firebase-functions');
const request = require('request-promise')
exports.indexPostsToElastic = functions.database.ref('/posts/{post_id}')
.onWrite((change,context) =>{
let postData = change.after.val();
let post_id = context.params.post_id;
console.log('Indexing post',postData);
let elasticSearchConfig = functions.config().elasticsearch;
let elasticSearchUrl = elasticSearchConfig.url + 'posts/' + post_id;
let elasticSearchMethod = postData ? 'POST' : 'DELETE';
let elasticSearchRequest = {
method:elasticSearchMethod,
url: elasticSearchUrl,
auth:{
username : elasticSearchConfig.username,
password : elasticSearchConfig.password,
},
body: postData,
json : true
};
return request(elasticSearchRequest).then(response => {
console.log("ElasticSearch response", response);
return response;
});
});
我在firebase中遇到以下错误
StatusCodeError: 400 - {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Rejecting mapping update to [posts] as the final mapping would have more than 1 type: [_doc, -LcajBAxUn3jrq0EHzYa]"}],
这是我在firebase中的数据库示例
-LcajBAxUn3jrq0EHzYa
city:
contact_email:
country:
description:
image:
post_id:
price:
state_province:
title:
请帮助我确定错误的出处。
答案 0 :(得分:0)
include_type_name
是最近几个版本中引入的elasticsearch标志。请参阅背景here。其目标是解决弹性搜索type != tableName
的长期困惑。要在您的请求中包含include_type_name
,请参见this。
除了firebase / postman以外,这更多是Elasticsearch API问题。
答案 1 :(得分:0)
首先,您需要检查所使用的elasticSearch版本。 如果您使用的版本低于7.0,则必须在“ _doc”字段中输入属性标签。稍后,在高于7.0的elasticSearch版本中,将替换“ _doc”字段。下面是经过修改的映射。
"mappings":{
"_doc" :{
"properties":{
"city":{
"type": "text"
},
"contact_email":{
"type": "text"
},
"country":{
"type": "text"
},
"description":{
"type": "text"
},
"image":{
"type": "text"
},
"post_id":{
"type": "text"
},
"state_province":{
"type": "text"
},
"title":{
"type": "text"
}
}
}
}
}