Создайте пользовательский тип отображения в Elasticsearch 7.3.2, используя узел js - PullRequest
0 голосов
/ 20 сентября 2019

Когда я выполняю пользовательское отображение с использованием kibana, оно работает должным образом, но когда я делаю то же самое в моей программе узла, оно показывает исключение при разборе mapper.Причина: определение корневого сопоставления имеет неподдерживаемые параметры: теги (имя настраиваемого сопоставления). Поскольку в kibana я могу использовать include_type_name = true, но в моей программе узла он недоступен.

        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
            })
        }
    }```

1 Ответ

1 голос
/ 20 сентября 2019

В соответствии с документацией вам необходимо указать include_type_name как

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
})

Или вы можете удалить теги имен сопоставления из сопоставления

  mappings: {
                    tags: {  ---> remove
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...