ステータスを0から1に変更しているインデックスのドキュメントを更新しています。ステータス0のドキュメントを更新して再度クエリすると、同じ文書なので、私は同じことをやり直すことになります。この操作は2回または3回ランダムに繰り返されます。私がsettimeoutで同じ操作を行うと、それは繰り返されないので、弾力的な検索クライアントの一部にある程度の遅れがあるようです。この問題は、平均で約5500回実行される5000個のドキュメントを更新すると拡大されます。古い更新されていないドキュメントを返す更新後の弾性検索クエリ
function getData(){
client.search({
index: 'es_dummy',
type: 'log',
size: 1,
body: {
"query" : {
"match" : {
"status" : "0"
}
}
}
},
function(err, resp){
console.log(resp.hits.hits.length);
if(resp.hits.hits.length)
updateIndexData(resp.hits.hits, 0, resp.hits.hits.length);
else
console.log("done");
});
}
getData();
function updateIndexData(resp, index, length){
client.update({
index: 'es_dummy',
type: 'log',
id: resp[index]._id,
script: 'ctx._source.status = 1'
},
function(err1, resp1){
if(!err1 && resp1){
console.log("updated" + " " + update);
var milliseconds = (new Date).getTime();
console.log("time " + milliseconds);
update++;
getData();
}
else
console.log(err1);
})
}