ElasticSerach批量查询

2016-11-09  本文已影响4492人  jackLee

ElasticSerach批量查询

ElasticSerach

有时候,我们不仅需要存储和查询数据,还需要对大量数据进行批量查询,这样就能节省网络请求所需的开销,降低查询时间提高查询效率。

Elasticsearch 允许通过一次查询请求执行多个文档的检索,这样可以避免多次请求造成的单独网络开销,相对于一个一个的检索,这样的效率更高。

在我的实践中,将单个查询改为批量查询后,1650条查询的数据优化结果直接由3分多钟到不足一秒钟

Es中的两种批量操作API

在我的实践中,一开始采用的是bulk API进行批量查询,但由于无法解析查询的结果,后改为mget ApI 的批量查询,最终实现了由单条数据查询到批量查询的优化,大大缩短了查询的时间。

<pre>

BulkRequestBuilder bulkRequest = client.prepareBulk();
// either use client#prepare, or use Requests# to directly build index/delete requests
bulkRequest.add(client.prepareIndex("twitter", "tweet", "1")
.setSource(jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "trying out Elasticsearch")
.endObject()
)
);
bulkRequest.add(client.prepareIndex("twitter", "tweet", "2")
.setSource(jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "another post")
.endObject()
)
);
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures()) {
// process failures by iterating through each bulk response item
}

</pre>

</pre>


最佳实践

</code>
</pre>


参考文档

关注我哦

关注学习技术
上一篇下一篇

猜你喜欢

热点阅读