2016-05-04 10 views
0

Ich versuche, ein Dokument aus buzz Index in ElasticSearch zu löschen. Direkt nach dem Löschen lese ich eine Liste der vorhandenen Einträge und das gelöschte Element ist immer noch in der Liste.Elasticsearch Cache

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

Anfordern Eintrag von id Staaten 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); 
     }); 
    }, 

Durchführen einer Suche nach Kriterien gibt noch diesen Eintrag in der Liste.

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){...}); 

Der gesamte Code ist in einem async.series. Hier ist die Kriterien:

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

db.GET und db.DELETE sind nur wrappera auf einfache HTTP-Anforderung.

'Manual' Kibana oder Postman reuquests, um Einträge Liste nach dem Löschen sind in Ordnung. Artikel ist nicht in der Liste. So funktioniert alles korrekt, außer vielleicht, etwas Caching-Problem.

Antwort

2

Sie sollten die Indizes aktualisieren, damit der Index vor dem Abrufen aktualisiert wird.

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