Как добавить / обновить настройку в индексе при поиске elasti c с использованиемasticsearch. js в приложении узла - PullRequest
0 голосов
/ 29 апреля 2020

Кажется, мои настройки не обновляются, так как отображение не использует пользовательский анализатор, когда я использую стандартный анализатор в отображении, он работает нормально.

Если я сначала создаю индекс и использую консоль curl / kibana для установки параметров, а затем запускаю сопоставление с помощью сценария, он работает нормально, однако при добавлении параметра с использованиемasticsearch. js клиент выдает ошибку as customer analyzer not found. Я пытался использовать индексы close и open, однако выдает ошибку (показано как прокомментировано в коде) TypeError: Unable to build a path with those params. Supply at least index

inites. js

const elasticsearch = require('elasticsearch');

const elasticClient = new elasticsearch.Client({
    host: 'localhost:9200',
    log: 'info'
});

elasticClient.ping({
    requestTimeout: 30000
}, (error) => {
    if (error) {
        console.error('elasticsearch cluster is down!');
    } else {
        console.log('Everything is ok');
    }
});

const indexName = 'test';

elasticClient.indices.create({
    index: indexName
}, (err, resp) => {
    if (err) {
        console.log(err);
    } else {
        // elasticClient.indices.close(indexName); 
        elasticClient.indices.putSettings({
            index: indexName,
            body: {
                settings: {
                    analysis: {
                        filter: {
                            edge_ngram_filter: {
                                type: 'edge_ngram',
                                min_gram: 1,
                                max_gram: 256
                            }
                        },
                        analyzer: {
                            custom_analyzer: {
                                type: 'custom',
                                tokenizer: 'whitespace',
                                filter: [
                                    'lowercase', 'edge_ngram_filter'
                                ]
                            }
                        }
                    }
                }
            }
        }, (err1, resp1) => {
            if (err) {
                console.log(err1);
            } else {
               // elasticClient.indices.open(indexName);
                elasticClient.indices.putMapping({
                    index: indexName,
                    body: {
                        properties: {
                            category: {
                                type: 'nested',
                                properties: {
                                    created_at: {
                                        type: 'date'
                                    },
                                    created_by: {
                                        type: 'long'
                                    },
                                    id: {
                                        type: 'long'
                                    },
                                    name: {
                                        type: 'text',
                                        analyzer: 'custom_analyzer',
                                        fields: {
                                            keyword: {
                                                type: 'keyword',
                                                ignore_above: 256
                                            }
                                        }
                                    },
                                    status: {
                                        type: 'long'
                                    },
                                    updated_at: {
                                        type: 'date'
                                    }
                                }
                            }
                        }
                    }
                }, (err1, resp1) => {
                    if (err) {
                        console.log(err1);
                    } else {
                        console.log(resp1);
                    }
                });
            }
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...