elasticsearch,Node.js,elasticsearch" /> elasticsearch,Node.js,elasticsearch" />

Node.js 使用nodejs在Elasticsearch 7.3.2中自定义映射类型

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.

我正在尝试使用!在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.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参数不可用。请解释我应该如何处理此问题。由于此问题已结束,请创建一个新问题,引用是一个。正在创建自定义映射,但在运行该功能后,它仍然显示此错误。