2017-02-22 7 views
0

Apache Camel과 Elasticsearch를 사용하는 프로젝트에서 작업하고 있는데 Camel 지원 버전은 어떤 것인지 궁금합니다.Apache Camel과 Elasticsearch의 통합

<dependencies> 
<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-core</artifactId> 
    <version>2.18.2</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-elasticsearch</artifactId> 
    <version>2.18.2</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.camel</groupId> 
    <artifactId>camel-xmljson</artifactId> 
    <version>2.18.2</version> 
</dependency> 

<dependency> 
    <groupId>xom</groupId> 
    <artifactId>xom</artifactId> 
    <version>1.2.5</version> 
</dependency> 

을하지만 elasticsearch하는 경로에 파일을 할 때, 나는 다음과 같은 오류가있어 :

내 pom.xml 파일은 다음과 같습니다

java.lang.IllegalStateException: Received message from unsupported version: [2.0.0] minimal compatible version is: [5.0.0]

I을 이 예외는 이전 버전을 사용하는 노드 또는 TransportClient 때문입니다. 그래서 elasticsearch 종속성 추가하려고 :

<dependency> 
     <groupId>org.elasticsearch</groupId> 
     <artifactId>elasticsearch</artifactId> 
     <version>5.1.2</version> 
    </dependency> 

을하지만 그것은 나에게 새로운 오류 제공 :

Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/action/WriteConsistencyLevel

그래서 내가 궁금하네요 .. 제가 아파치 낙타와 함께 사용할 수있는 ES의 버전?

elasticsearch 데이터를 보내려고하는 코드 :

XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat(); 

from("file://C:/Projects/?fileName=data.xml&charset=utf-8") 
    .marshal(xmlJsonFormat) 
    .to("elasticsearch://clusterES?transportAddresses=127.0.0.1:9300&operation=BULK_INDEX&indexName=xml&indexType=account"); 
+1

는 ES 서버 2.4.3를 사용하여 문제를 해결! – Cylon

답변

1

난 당신이 낙타 elasticsearch 이외의 다른 치어를 추가 할 필요가 있다고 생각하지 않습니다. 이전 버전에서 실행중인 TransportClient가있을 가능성이 높습니다. 찾아서 TransportClient를 업그레이드해야합니다.

https://www.elastic.co/guide/en/elasticsearch/guide/current/_transport_client_versus_node_client.html

https://discuss.elastic.co/t/received-message-from-unsupported-version-2-0-0-minimal-compatible-version-is-5-0-0/64708

+0

낙타 저장소를 간략하게 살펴보면 두 개의 탄성 검색 모듈 * camel-elasticsearch * 및 * camel-elasticsearch5 *가 있음을 알 수 있습니다. 의존성을 대체하는 것만 큼 쉽습니다. 즉, 탄성 검색 노드 클라이언트는 버전 차이, 심지어 사소한 버전 차이에 대해 매우 민감하므로 아직 작동하지 않을 수 있습니다. 대신 HTTP 전송을 사용하는 옵션이 있다면 훨씬 더 강력 할 것입니다. –