簡體   English   中英

Elasticsearch Connector 作為 Flink 中的源

[英]Elasticsearch Connector as Source in Flink

我使用 Elasticsearch Connector 作為 Sink 將數據插入 Elasticsearch(參見: https : //ci.apache.org/projects/flink/flink-docs-release-1.7/dev/connectors/elasticsearch.html )。

但是,我沒有找到任何連接器來從 Elasticsearch 獲取數據作為源。

是否有任何連接器或示例可以在 Flink 管道中使用 Elasticsearch 文檔作為源?

問候,

阿里

我不知道Flink的顯式ES來源。 我確實看到一個用戶在談論使用HadoopInputFormat -hadoop作為Flink的HadoopInputFormat ,但是我不知道這是否對他們HadoopInputFormat (請參閱他們的代碼 )。

我最終定義了從ElasticSearch函數的簡單讀取

    public static class ElasticsearchFunction
        extends ProcessFunction<MetricMeasurement, MetricPrediction> {

    public ElasticsearchFunction() throws UnknownHostException {
        client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("YOUR_IP"), PORT_NUMBER));
    }

    @Override
    public void processElement(MetricMeasurement in, Context context, Collector<MetricPrediction> out) throws Exception {
        MetricPrediction metricPrediction = new MetricPrediction();

        metricPrediction.setMetricId(in.getMetricId());
        metricPrediction.setGroupId(in.getGroupId());
        metricPrediction.setBucket(in.getBucket());

        // Get the metric measurement from Elasticsearch
        SearchResponse response = client.prepareSearch("YOUR_INDEX_NAME")
                .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                .setQuery(QueryBuilders.termQuery("YOUR_TERM", in.getMetricId()))   // Query
                .setPostFilter(QueryBuilders.rangeQuery("value").from(0L).to(50L))     // Filter
                .setFrom(0).setSize(1).setExplain(true)
                .get();

        SearchHit[] results = response.getHits().getHits();
        for(SearchHit hit : results){
            String sourceAsString = hit.getSourceAsString();
            if (sourceAsString != null) {
                ObjectMapper mapper = new ObjectMapper();
                MetricMeasurement obj = mapper.readValue(sourceAsString, MetricMeasurement.class);
                obj.getMetricId();
                metricPrediction.setPredictionValue(obj.getValue());
            }
        }
        out.collect(metricPrediction);
    }
}

Hadoop 兼容性 + Elasticsearch Hadoop

https://github.com/cclient/flink-connector-elasticsearch-source

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM