[ 
https://issues.apache.org/jira/browse/NIFI-2068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15359205#comment-15359205
 ] 

ASF GitHub Bot commented on NIFI-2068:
--------------------------------------

Github user JPercivall commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/576#discussion_r69323436
  
    --- Diff: 
nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/AbstractElasticsearchHttpProcessor.java
 ---
    @@ -0,0 +1,161 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.nifi.processors.elasticsearch;
    +
    +import com.squareup.okhttp.OkHttpClient;
    +import com.squareup.okhttp.Request;
    +import com.squareup.okhttp.RequestBody;
    +import com.squareup.okhttp.Response;
    +import org.apache.nifi.components.PropertyDescriptor;
    +import org.apache.nifi.logging.ComponentLog;
    +import org.apache.nifi.processor.ProcessContext;
    +import org.apache.nifi.processor.exception.ProcessException;
    +import org.apache.nifi.processor.util.StandardValidators;
    +import org.apache.nifi.ssl.SSLContextService;
    +import org.codehaus.jackson.JsonNode;
    +import org.codehaus.jackson.map.ObjectMapper;
    +
    +import javax.net.ssl.SSLContext;
    +import java.io.IOException;
    +import java.io.InputStream;
    +import java.net.InetSocketAddress;
    +import java.net.Proxy;
    +import java.net.URL;
    +import java.util.concurrent.TimeUnit;
    +import java.util.concurrent.atomic.AtomicReference;
    +
    +/**
    + * A base class for Elasticsearch processors that use the HTTP API
    + */
    +public abstract class AbstractElasticsearchHttpProcessor extends 
AbstractElasticsearchProcessor {
    +
    +    public static final PropertyDescriptor ES_URL = new 
PropertyDescriptor.Builder()
    +            .name("elasticsearch-http-url")
    +            .displayName("Elasticsearch URL")
    +            .description("Elasticsearch URL which will be connected to, 
including scheme, host, port, path. The default port for the REST API is 9200.")
    +            .required(true)
    +            .addValidator(StandardValidators.URL_VALIDATOR)
    +            .build();
    +
    +    public static final PropertyDescriptor PROXY_HOST = new 
PropertyDescriptor.Builder()
    +            .name("elasticsearch-http-proxy-host")
    +            .displayName("Proxy Host")
    +            .description("The fully qualified hostname or IP address of 
the proxy server")
    +            .required(false)
    +            .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
    +            .build();
    +
    +    public static final PropertyDescriptor PROXY_PORT = new 
PropertyDescriptor.Builder()
    +            .name("elasticsearch-http-proxy-port")
    +            .displayName("Proxy Port")
    +            .description("The port of the proxy server")
    +            .required(false)
    +            .addValidator(StandardValidators.PORT_VALIDATOR)
    +            .build();
    +
    +    public static final PropertyDescriptor CONNECT_TIMEOUT = new 
PropertyDescriptor.Builder()
    +            .name("elasticsearch-http-connect-timeout")
    +            .displayName("Connection Timeout")
    +            .description("Max wait time for the connection to the 
Elasticsearch REST API.")
    +            .required(true)
    +            .defaultValue("5 secs")
    +            .addValidator(StandardValidators.TIME_PERIOD_VALIDATOR)
    +            .build();
    +
    +    public static final PropertyDescriptor RESPONSE_TIMEOUT = new 
PropertyDescriptor.Builder()
    +            .name("elasticsearch-http-response-timeout")
    +            .displayName("Response Timeout")
    +            .description("Max wait time for a response from the 
Elasticsearch REST API.")
    +            .required(true)
    +            .defaultValue("15 secs")
    +            .addValidator(StandardValidators.TIME_PERIOD_VALIDATOR)
    +            .build();
    +
    +    private final AtomicReference<OkHttpClient> 
okHttpClientAtomicReference = new AtomicReference<>();
    +
    +    @Override
    +    protected void createElasticsearchClient(ProcessContext context) 
throws ProcessException {
    +        okHttpClientAtomicReference.set(null);
    +
    +        OkHttpClient okHttpClient = new OkHttpClient();
    +
    +        // Add a proxy if set
    +        final String proxyHost = 
context.getProperty(PROXY_HOST).getValue();
    +        final Integer proxyPort = 
context.getProperty(PROXY_PORT).asInteger();
    +        if (proxyHost != null && proxyPort != null) {
    --- End diff --
    
    May want to add a custom validator to check if one is set the other has to 
be set.


> Add Elasticsearch processors that use the REST API
> --------------------------------------------------
>
>                 Key: NIFI-2068
>                 URL: https://issues.apache.org/jira/browse/NIFI-2068
>             Project: Apache NiFi
>          Issue Type: Improvement
>            Reporter: Matt Burgess
>            Assignee: Matt Burgess
>             Fix For: 1.0.0
>
>
> The current Elasticsearch processors use the Transport Client, and as a 
> result there can be some compatibility issues between multiple versions of ES 
> clusters. The REST API is much more standard between versions, so it would be 
> nice to have ES processors that use the REST API, to enable things like 
> migration from an Elasticsearch cluster with an older version to a cluster 
> with a newer version.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to