我在弹性搜索中逐个索引1000个json文档(仅用于测试目的),如下所示
deleteIndex(myIndex);
List<XContentBuilder> docs = new ArrayList<XContentBuilder>();
for (int i=0;i< 1000; i++)
{
docs.add(createJsonDoc());
}
for (int i = 0; i < 1000; i++)
{
client.prepareIndex(myindex, mytype)
.setSource(docs.get(i))
.execute();
//Thread.sleep(10);
}
我注意到每次运行此代码时,它总是索引不到1000个文档。 如果我取消注释上面的thread.sleep行,那么我可以将其指向1000的唯一方法就是。
为什么?
答案 0 :(得分:0)
检查从ES返回的响应,其中一些很可能是失败的。这是我们在所有调用中使用的扩展方法:
internal IRestResponse<T> VerifyResponse<T>(IRestResponse<T> response, Action okAction)
{
response.ThrowIfNull("response");
if (response.StatusCode == HttpStatusCode.OK)
{
if (okAction != null)
{
okAction();
}
return response;
}
if (response.StatusCode == HttpStatusCode.BadRequest)
{
throw new BadRequestException(response);
}
throw new Exception(string.Format("Unhandled API result: {0}\r\n{1}", response.StatusCode, response.Content));
}