是否可以从elasticsearch中获取实时数据?

时间:2019-05-20 08:30:23

标签: java elasticsearch solr websocket streaming

我正在索引实时输出到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编写的方法更有效的方法?

0 个答案:

没有答案