使用Node JS在Elasticsearch 7.3.2中创建自定义映射类型 [英] Create Custom mapping type in Elasticsearch 7.3.2 using node js

查看:79
本文介绍了使用Node JS在Elasticsearch 7.3.2中创建自定义映射类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用kibana进行自定义映射时,它可以正常工作,但是当我在节点程序中执行相同的操作时,它显示映射器解析异常.原因:根映射定义具有不受支持的参数:标签(自定义映射名称)因为在kibana中我可以使用include_type_name = true,但是在我的节点程序中它不可用.

When I am doing custom mapping using kibana its working properly but when I am doing the same thing in my node program its showing mapper parsing exception. Reason:Root mapping definition has unsupported parameters:tags(custom mapping name) Because in kibana i am able to use include_type_name =true but in my node program it is not available.

        var name = req.body.templatename;
        var index_patterns = req.body.index_patterns;
        console.log(index_patterns);
        const opts: IndicesPutTemplateParams = {
            name: name,
            body: {
                index_patterns: [index_patterns],
                settings: {
                    analysis: {
                        filter: {
                            autocomplete_filter: {
                                type: "edge_ngram",
                                min_gram: 1,
                                max_gram: 20
                            }
                        },
                        analyzer: {
                            autocomplete: {
                                type: "custom",
                                tokenizer: "standard",
                                filter: [
                                    "lowercase",
                                    "autocomplete_filter"
                                ]
                            }
                        }
                    }
                },
                mappings: {
                    tags: {
                        properties: {
                            name: {
                                type: "text",
                                analyzer: "autocomplete",
                                search_analyzer: "standard"
                            },
                            normalized: {
                                type: "text"
                            },
                            status: {
                                type: "text"
                            },
                            createdat: {
                                type: "date"
                            },
                            updatedat: {
                                type: "date"
                            }
                        }
                    }
                }

            }
        }
        try {
            esClient.indices.putTemplate(opts).then((data: any) => {
               return res.json({
                   data
               });
                console.log(data);
              }).catch((err: any) => {
                console.log(err);
                res.status(500).json({
                    err
                })
            });     
        } catch (error) {
            res.status(500).json({
                error
            })
        }
    }```

推荐答案

按照

As Per documentation you need to give include_type_name as

client.indices.putTemplate({
  name: string,
  include_type_name: boolean,  ---> 
  order: number,
  create: boolean,
  timeout: string,
  master_timeout: string,
  flat_settings: boolean,
  body: object                -> mapping object
})

或者您可以从映射中删除映射名称标签

Or you can drop mapping name tags from mapping

  mappings: {
                    tags: {  ---> remove

这篇关于使用Node JS在Elasticsearch 7.3.2中创建自定义映射类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆