2017-02-22 7 views
0

Ich arbeite an einem Projekt mit Apache Camel und Elasticsearch und ich frage mich, welche Version von Elasticsearch Camel unterstützt?Apache Camel Integration mit Elasticsearch

Mein pom.xml sieht wie folgt aus:

<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> 

Aber wenn ich zu routen wollen, eine Datei Elasticsearch, habe ich folgende Fehlermeldung bekommen:

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

I festgestellt, dass diese Ausnahme auf einen Knoten oder einen TransportClient mit einer alten Version zurückzuführen ist. Also versuche ich, die Elasticsearch Abhängigkeit hinzuzufügen:

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

Aber es gibt mir einen neuen Fehler:

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

Also ich frage mich .. Welche Version von ES kann ich mit Apache Camel verwenden?

Der Code für den Versuch, Daten zu senden an 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

das Problem gelöst ein ES-Server 2.4.3 unter Verwendung! – Cylon

Antwort

1

Das glaube ich nicht, dass Sie andere pom außer dem Kamel-Elasticsearch hinzufügen müssen. Es scheint wahrscheinlicher, dass ein TransportClient auf einer älteren Version ausgeführt wird. Sie müssen es finden und den TransportClient aktualisieren.

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

Aus einem kurzen Blick auf das Kamellager kann ich sehen, dass es zwei elastische Suchmodule gibt: camel-elasticsearch * und * camel-elasticsearch5 *. Es könnte so einfach sein wie deine Abhängigkeit zu ersetzen. Davon abgesehen ist der ElasticSearch-Knoten-Client sehr sensibel für Versionsunterschiede, selbst für kleinere, so dass es immer noch nicht funktioniert. Wenn es eine Option gibt, stattdessen den http-Transport zu verwenden, der viel robuster wäre. –