我正在索引实时输出到elasticsearch的日志。
我正在使用WebSocket,并且想实时从弹性搜索中获取数据。
我现在实现的代码从第二秒(或lastTime)开始就一直在这样的时间基础上带来数据。
Long lastTime = null;
while(true) {
SearchHits hits = ElasticsearchProcessor.getData(lastTime);
long totalHits = hits.totalHits;
for (int i = 0; i < totalHits; i++) {
Map<String, Object> source = hits.getAt(i).getSourceAsMap();
if(!list.contains(source)) {
list.add(source);
WebSocketManager.sendMessage(source.toString());
}
if(i == (totalHits-1)) {
lastTime = (Long) hits.getAt(i).getSourceAsMap().get("date");
}
}
}
这是一种使用列表在重复数据删除后实时显示整个数据的方法。
我认为这对系统性能不利,
而且似乎无效。
是否有一种方法可以将Elasticsearch中的实时数据引入流式传输? 还是有比我用Java编写的方法更有效的方法?