Elasticsearch批量更新后跟搜索

时间:2015-12-15 19:40:13

标签: asynchronous elasticsearch bulk

在我的服务器中,我使用批量API更新了一些文档:

eucdist <- function(z,p){

      return(dist(rbind(z, p)))
    }

# in this case s=1 since that is the <= condition
res <- do.call(rbind,lapply(1:nrow(grid),function(m) if(eucdist(as.numeric(grid[m,]),as.numeric(p[1,])) <= 1){return(grid[m,])}))

收到回复后,我使用搜索对该文档发出新请求:

{"update":{"_type":"post","_retry_on_conflict":"3","_index":"xxxx","_id":"yyyy"}}
{"doc":{"sentiment":"positive","mood":1,"upgrade":true}}

但是返回的文档没有更新值(仍然具有旧值)。如果我等待一段时间,则会显示更新的值。我认为这是因为批量是异步的?有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您可以使用refresh api强制进行索引更新,甚至可以在批量命令结束时添加?refresh=true。但通常不推荐。此外,如果有多个节点,您可能需要使用synced flush