Кажется, мои настройки не обновляются, так как отображение не использует пользовательский анализатор, когда я использую стандартный анализатор в отображении, он работает нормально.
Если я сначала создаю индекс и использую консоль 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);
}
});
}
});
}
});