2016-05-04 2 views
0

Я пытаюсь удалить документ из индекса buzz в ElasticSearch. После удаления я получаю список существующих записей, а удаленный элемент все еще находится в списке.Elasticsearch cache

async.series([ 
function(callback) { 
    self._db.DELETE('buzz/news/' + self._id, {}, {}, function(err, response) { 
     return callback(err); 
    }); 
}, 

запрашивающей запись по идентификатору состояний found:false

function(callback) { 
     self._db.GET('buzz/news/' + self._id, { 
     v: Date.now() 
     }, {}, function(err, result) { 
     console.log('result: ', JSON.stringify(result)); 
     callback(err); 
     }); 
    }, 

исполнительских поиск по критериям еще возвращает этот элемент в списке.

function(callback) { 
     self._db.GET('buzz/news/_search', { 
     v: Date.now() 
     }, qq, function(err, result) { 
     console.log('result: ', JSON.stringify(result.hits.hits.map(function(hit) { 
      return hit._id; 
     }))); 
     callback(err); 
     }); 
    },], function(err){...}); 

Весь код внутри одного async.series. Вот критерии:

var qq = { 
    "query": { 
    "filtered": { 
     "query": { 
     "query_string": { 
      "fields": ["title"], 
      "query": "*" 
     } 
     }, 
     "filter": { 
     "bool": { 
      "must": [], 
      "_cache": false 
     } 
     } 
    } 
    }, 
    "sort": [{ 
    "pubDate": "desc" 
    }], 
    "from": "0", 
    "size": "30" 
} 

db.GET и db.DELETE просто wrappera для простого запроса HTTP.

«Руководство пользователя» Кибана или почтальон reuquests, чтобы получить список записей после удаления, в порядке. Элемент отсутствует в списке. Итак, все работает правильно, за исключением, может быть, проблемы с кешированием.

ответ

2

Вы должны обновить индексы для индекса, который будет обновляться до его получения.

client.indices.refresh([params, [callback]])