代码之家  ›  专栏  ›  技术社区  ›  Kuba Szymanowski

检查Elasticsearch是否已完成索引

  •  11
  • Kuba Szymanowski  · 技术社区  · 7 年前


    我想为我的应用程序执行集成测试,检查插入后是否可以找到记录。 例如,如果我提出以下请求:

    POST /_all/_bulk
    {  
       "update":{  
          "_id":419,
          "_index":"popc",
          "_type":"offers"
       }
    }
    {  
       "doc":{  
          "id":"419",
          "author":"foo bar",
          "number":"642-00419"
       },
       "doc_as_upsert":true
    }
    

    我立即检查,测试失败了,因为Elasticsearch需要一些时间来完成我的请求。

    我可以将睡眠时间延长到3秒,但这会使测试非常慢,因此我提出了这个问题。

    cat pending tasks pending cluster tasks

    如果其中任何一个是相关的,我正在使用 Elasticsearch 5.4 , Laravel Scout 3.0.5 tamayo/laravel-scout-elastic 3.0.3

    2 回复  |  直到 7 年前
        1
  •  7
  •   olvlvl    7 年前

    我发现这个PR: https://github.com/elastic/elasticsearch/pull/17986

    您可以使用 refresh: wait_for

        2
  •  2
  •   dshockley    7 年前

    您可以等待响应;当您收到对更新请求的响应时,它就完成了(并且您不会在挂起或当前任务中看到它)。我认为您遇到的问题可能是刷新间隔(请参阅 dynamic settings

    如果要查看正在进行的任务,可以使用 tasks api