Node.js 使用nodejs在Elasticsearch 7.3.2中自定义映射类型
我正在尝试使用!在elasticsearch 7.3.2中创建自定义映射类型!。但它只是创建默认的_文档类型映射。当我提供自定义文档类型时,它会抛出一个错误,您应该在elasticsearch 7.3.2中给出include_type_name=true 我已经尝试使用include\u type\u name=true提供自定义映射类型Node.js 使用nodejs在Elasticsearch 7.3.2中自定义映射类型,node.js,
elasticsearch,Node.js,
elasticsearch,我正在尝试使用!在elasticsearch 7.3.2中创建自定义映射类型!。但它只是创建默认的_文档类型映射。当我提供自定义文档类型时,它会抛出一个错误,您应该在elasticsearch 7.3.2中给出include_type_name=true 我已经尝试使用include\u type\u name=true提供自定义映射类型 var indexName = req.body.indexName; var mappingType = req.body.
var indexName = req.body.indexName;
var mappingType = req.body.mappingType;
const mapping = {
properties: {
name: {
type: "text",
analyzer: "autocomplete",
search_analyzer: "standard"
},
createdate: {
type: "date"
}
}
}
await esClient.indices.putMapping({
index: indexName,
type: mappingType,
include_type_name:true,
body: mapping
}, (err: any, resp: any, status: any) => {
if (err) {
return res.status(400).json({ status, err });
}
res.status(200).json({ resp, status });
})
}
预期:我正在尝试创建自定义映射类型,因为当我使用Transporter从Mongodb摄取数据时,它将映射类型作为集合的名称,并且我正在创建的映射具有默认的_doctype映射。
错误:“拒绝对[tag]的映射更新,因为最终映射将有多个类型:[u doc,tags]”标记(集合名称是的,这是ES 7(以后)中的预期行为,仅支持单一映射类型,默认情况下称为
\u doc
)
正如您所注意到的,您可以通过在调用中添加include\u type\u name=true
来改变ES7中的行为
问题是,您只能在索引创建时执行此操作,即在创建索引后无法修改映射类型名称。因此,由于您无法从MongoDB控制索引创建,因此您所能做的就是在ES中创建索引模板,该模板将在创建索引后生效
在创建索引之前,在Kibana Dev Tools中运行此操作:
PUT _template/tags?include_type_name=true
{
"index_patterns": ["my-index*"], <--- change this pattern to match yours
"mappings": {
"tags": {
"properties": {
"name": {
"type": "text",
"analyzer": "autocomplete",
"search_analyzer": "standard"
},
"createdate": {
"type": "date"
}
}
}
}
}
PUT\u模板/标签?包含类型\u名称=真
{
“索引模式”:[“我的索引*”],非常感谢。当我使用kibana执行此操作时,其工作正常,但当我使用节点程序执行此操作时,其显示映射程序解析器异常,因为include_type_name参数不可用。请解释我应该如何处理此问题。由于此问题已结束,请创建一个新问题,引用是一个。正在创建自定义映射,但在运行该功能后,它仍然显示此错误。