0

У меня есть схема mongoose, и когда вызывается сохранение или обновление, по очереди она также обновляет источник упругого искателя. У меня есть одна проблема, когда значение status равно draft, оно не должно обновлять поиск по эластичности. Как это может быть достигнуто путем внесения изменений в следующую схему?Условное обновление с помощью Elastic Search Client с mongoose static

var TestShcema = new mongoose.Schema({ 
     custom_id:{ 
      type:String, 
      required: true, 
      index: {unique: true}, 
      es_indexed: true, 
      es_index:"analyzed", 
      es_index_analyzer:"autocomplete_analyzer" 
     }, 
     title:{ 
      type:String, 
      index: {unique: false}, 
      es_indexed: true, 
      es_index:"analyzed", 
      es_index_analyzer:"autocomplete_analyzer" 
     }, 
     status:{ 
      type:String, 
      index: {unique: false}, 
      es_indexed: true, 
      es_index:"analyzed", 
      es_index_analyzer:"autocomplete_analyzer" 
     } 
    }); 
    //Hook with Elastic Search 
    var esClient = new elasticsearch.Client({host: config.elasticsearch.host}); 

    TestShcema.plugin(mongoosastic, { 
     esClient: esClient 
    }); 

    var Test = mongoose.model('Test', TestShcema); 

    module.exports = Test; 

ответ

1

вы можете использовать фильтрованную Индексация

копию пасты из npmjs

Вы можете указать функцию фильтра для индексирования модели для Elasticsearch на основе некоторых конкретных условий.

Функция фильтрации должна возвращать значение True для условий, которые будут игнорировать индексацию в Elasticsearch.

var MovieSchema = new Schema({ 
    title: {type: String}, 
    genre: {type: String, enum: ['horror', 'action', 'adventure', 'other']} 
}); 

MovieSchema.plugin(mongoosastic, { 
    filter: function(doc) { 
    return doc.genre === 'action'; 
    } 
}); 

Экземпляры модели Movie, имеющие «действие» в своем жанре не будет индексироваться в Elasticsearch.

https://www.npmjs.com/package/mongoosastic#filtered-indexing

вы можете сделать что-то вроде этого

TestShcema.plugin(mongoosastic, { 
    filter: function(doc) { 
    return doc.status === 'draft'; 
    } 
});