Я использую node.js + mon go .db + mongosasti c 4.5.1 + elasti c 7.4.1. Проблема в том, что когда mongosasti c создает индекс (я думаю, он создается автоматически, даже если я отправляю запрос на localhost: 9200 / tenders / tender / 123123
{
"id":123123,
"nameRu":"test"
}
Mongoosasti c создает документ Кстати, используя этот URL, а не / tenders / _doc / 123123. Если я создаю отображение по требованию, я получаю сообщение об ошибке
"type":"illegal_argument_exception","reason":"Rejecting mapping update to [tenders] as the final mapping would have more than 1 type: [_doc, tender]"}
В elasti c 7+ создание типа было удалено. Поэтому моя задача чтобы создать отображение с типом /tenders/tender/blablabla
или чтобы Mongoosasti c использовал _doc
вместо tender
.
Функция отображения
const mongoose = require('mongoose');
const mongoosastic = require('mongoosastic');
mongoose.connect('mongodb://localhost/zakupki2', {useNewUrlParser: true});
const tSchema = require('./Schema/Tenders');
const TenderSchema = new mongoose.Schema(tSchema);
TenderSchema.plugin(mongoosastic, {
"host": "localhost",
"port": 9200
});
var Tender = mongoose.model('tender', TenderSchema);
Tender.remove({}, function(err) {
console.log('collection removed')
createMapping()
//makeRequest();
});
function createMapping()
{
Tender.createMapping(
{
"settings": {
"analysis": {
"filter": {
"russian_stop": {
"type": "stop",
"stopwords": "_russian_"
},
"russian_keywords": {
"type": "keyword_marker",
"keywords": [
"закупка",
"тендер",
"услуги",
"приобритение",
"аренда"
]
},
"russian_stemmer": {
"type": "stemmer",
"language": "russian"
}
},
"analyzer": {
"rebuilt_russian": {
"tokenizer": "standard",
"filter": [
"lowercase",
"russian_stop",
"russian_keywords",
"russian_stemmer"
]
}
}
}
},
"mappings": {
"properties": {
"id": {
"type": "long"
},
"nameRu": {
"type": "text",
"analyzer": "rebuilt_russian",
"fields": {
"exact": {
"type": "text",
"analyzer": "rebuilt_russian"
}
}
}
}
}
},
(err, mapping) =>
{
console.log('err',err);
console.log('mapping',mapping);
makeRequest();
});
}
Схема
const mongoose = require('mongoose');
module.exports = {
id: { type: Number, default: null, es_indexed:true},
numberAnno: { type: String, default: null},
nameRu: {type: String, es_indexed:true, es_boost:2.0, es_search_analyzer:"rebuilt_russian", es_analyzer: "rebuilt_russian"},
}