【发布时间】:2019-11-21 06:33:18
【问题描述】:
我正在使用 Java_API 从 ElasticSearch 中检索记录,在 Java 应用程序中检索 100000 个文档(记录/行)大约需要 5 秒。
ElasticSearch 慢吗?还是正常?
这里是索引设置:
我试图获得更好的性能但没有结果,这就是我所做的:
将 ElasticSearch 堆空间设置为 3GB,它是 1GB(默认)
-Xms3g-Xmx3g从 7200 RPM 硬盘迁移 SSD 上的 ElasticSearch
只检索一个文件而不是 30 个
这是我的 Java 实现代码
private void getDocuments() {
int counter = 1;
try {
lgg.info("started");
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));
SearchResponse scrollResp = client.prepareSearch("ebpp_payments_union").setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(QueryBuilders.matchAllQuery())
.setScroll(new TimeValue(1000))
.setFetchSource(new String[] { "payment_id" }, null)
.setSize(10000)
.get();
do {
for (SearchHit hit : scrollResp.getHits().getHits()) {
if (counter % 100000 == 0) {
lgg.info(counter + "--" + hit.getSourceAsString());
}
counter++;
}
scrollResp = client.prepareSearchScroll(scrollResp.getScrollId())
.setScroll(new TimeValue(60000))
.execute()
.actionGet();
} while (scrollResp.getHits().getHits().length != 0);
client.close();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
我知道
TransportClient已被弃用,我尝试过RestHighLevelClient也是,但它不会改变任何东西。
您知道如何获得更好的性能吗?
我应该更改 ElasticSearch 中的某些内容还是修改我的 Java 代码?
【问题讨论】:
-
每个请求需要 5 秒,它是您向 ES 集群发出的唯一请求吗?
-
从3到7检索100000条记录变化的时间,一次只有一个请求
标签: performance elasticsearch bigdata java