2016-08-02 8 views
0

Я пытаюсь индексировать существующую коллекцию в ElasticSearch, используя плагин mongoosastic для NodeJs. Это моя схема:MongoDB с отображением ElasticSearch с Mongoosastic

const callCenterSchema = new mongoose.Schema({ 
    _owner : { type: mongoose.Schema.Types.ObjectId, ref: 'User', es_type: 'object' }, 
    ivrs: [{ 
     name: { 
      type: String, 
      es_type: 'string' 
     }, 
     ivrType: { 
      type: String, 
      default: 'mobile', 
      enum: ['mobile', 'website'], 
      es_type: 'string' 
     }, 
     submenu: { 
      type: [ CallCenterSubmenu.schema ], 
      es_type: 'nested', 
      es_include_in_parent: true 
     } 
    }] 
}); 

callCenterSchema.plugin(mongoosastic, { 
    esClient: require('tusla/lib/db/elastic').elastic, 
    populate: [ 
     { path: '_owner' } 
    ] 
}); 

let CallCenter = mongoose.model('CallCenter', callCenterSchema); 
CallCenter.synchronize() 

CallCenter.createMapping(function(err, mapping) { 
    if (err) { 
    console.error('Error creating mapping for CallCenters', err.message); 
    } 
}); 


module.exports = CallCenter; 

Моя субменю схема выглядит так:

const callcenterSubmenuSchema = new mongoose.Schema({ 
    name: String, 
    key: String, 
    waitTime: { 
     type: Number 
    }, 
    waitSuffix: String, 
    numberOrLink: String, 
    auth: { 
     canBeSkipped: String, 
     fields: { 
      type: Array, 
      es_type: 'object' 
     }, 
     verification: String, 
     regExp: String 
    }, 
    submenu: [this] 
}, { _id: false }); 

я получаю эту конкретную ошибку, но не мог решить. Я ценю, если вы, ребята, можете мне помочь.

Спасибо!

Ошибка при создании карт для CallCenters [mapper_parsing_exception] Нет обработчика для типа [смешанный] объявлены на поле [Подменю]

+0

Что такое CallCenterSubmenu.schema? – alpert

+0

Я привел схему подменю ниже первой схемы. – Yagiz

ответ

1

Я думаю, проблема в том, что линия:

type: [ CallCenterSubmenu.schema ] 

В сообщении об ошибке говорится:

No handler for type [mixed] declared on field [submenu] 

Таким образом, вы пытаетесь определить тип submenu поле fixed (или elasticsearch выводит его как я не конечно), и, как я знаю, нет такого типа, как mixed. Таким образом, ES запускает это исключение. Вы должны указать действительный тип: https://www.elastic.co/guide/en/elasticsearch/reference/master/mapping-types.html

Смежные вопросы