diff --git a/elasticsearch-6.1.1/pom.xml b/elasticsearch-6.1.1/pom.xml
new file mode 100644
index 0000000..e3afb56
--- /dev/null
+++ b/elasticsearch-6.1.1/pom.xml
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.bundles</groupId>
+        <artifactId>bundles-pom</artifactId>
+        <version>14</version>
+        <relativePath>../bundles-pom/pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.elasticsearch</artifactId>
+    <version>6.1.1_2-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix :: Bundles :: ${pkgArtifactId}</name>
+    <description>This OSGi bundle wraps ${pkgArtifactId} ${pkgVersion} jar file.</description>
+
+    <scm>
+        <connection>scm:git:https://git-wip-us.apache.org/repos/asf/servicemix-bundles.git</connection>
+        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/servicemix-bundles.git</developerConnection>
+        <url>https://git-wip-us.apache.org/repos/asf?p=servicemix-bundles.git</url>
+    <tag>HEAD</tag>
+  </scm>
+
+    <properties>
+        <pkgGroupId>org.elasticsearch</pkgGroupId>
+        <pkgArtifactId>elasticsearch</pkgArtifactId>
+        <pkgVersion>6.1.1</pkgVersion>
+        <servicemix.osgi.export.pkg>
+            !org.elasticsearch.client,
+            org.elasticsearch*
+        </servicemix.osgi.export.pkg>
+        <servicemix.osgi.import.pkg>
+            !org.elasticsearch*,
+            !org.joda.convert,
+            !org.locationtech.spatial4j*,
+            !com.vividsolutions.jts.geom,
+            com.google.common.collect,
+            com.fasterxml.jackson.core;version="[2.8,3)",
+            com.fasterxml.jackson.dataformat.yaml;version="[2.8,3)",
+            com.fasterxml.jackson.dataformat.smile;version="[2.8,3)",
+            com.sun.jna*;resolution:=optional,
+            com.ning.compress.lzf.util,
+            org.apache.logging.log4j*;version="[2.8,3)",
+            *;resolution:=optional
+        </servicemix.osgi.import.pkg>
+        <servicemix.osgi.private.pkg>
+            org.joda.time*,
+            org.joda.convert*,
+            org.apache.lucene*,
+            org.tartarus.snowball*,
+            com.tdunning.math.stats,
+            com.vividsolutions.jts.geom,
+            com.carrotsearch.hppc*,
+            joptsimple*,
+            org.HdrHistogram,
+            org.locationtech.spatial4j*,
+            META-INF.services.*
+        </servicemix.osgi.private.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.elasticsearch.plugin</groupId>
+            <artifactId>transport-netty4-client</artifactId>
+            <version>${pkgVersion}</version>
+        </dependency>
+        <dependency>
+             <groupId>org.apache.logging.log4j</groupId>
+             <artifactId>log4j-core</artifactId>
+             <version>2.9.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-backward-codecs</artifactId>
+            <version>7.1.0</version>
+        </dependency>
+
+        <!-- sources -->
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>${pkgArtifactId}</artifactId>
+            <version>${pkgVersion}</version>
+            <classifier>sources</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.elasticsearch.plugin</groupId>
+            <artifactId>transport-netty4-client</artifactId>
+            <version>${pkgVersion}</version>
+            <classifier>sources</classifier>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <artifactSet>
+                                <includes>
+                                    <include>${pkgGroupId}:${pkgArtifactId}</include>
+				    <include>org.elasticsearch.plugin:transport-netty4client</include>
+                                    <include>org.apache.lucene:*</include>
+                                </includes>
+                            </artifactSet>
+                            <filters>
+                                <filter>
+                                    <artifact>${pkgGroupId}:${pkgArtifactId}</artifact>
+                                    <includes>
+                                        <include>config/**</include>
+                                        <include>META-INF/services/**</include>
+                                        <include>plugins.txt</include>
+                                    </includes>
+                                </filter>
+                                <filter>
+                                    <artifact>org.apache.lucene:*</artifact>
+                                    <includes>
+                                        <include>META-INF/services/**</include>
+                                    </includes>
+                                </filter>
+                            </filters>
+                            <transformers>
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+                            </transformers>
+                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+                            <createDependencyReducedPom>true</createDependencyReducedPom>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/elasticsearch-6.1.1/src/main/java/org/elasticsearch/common/logging/Loggers.java b/elasticsearch-6.1.1/src/main/java/org/elasticsearch/common/logging/Loggers.java
new file mode 100644
index 0000000..97e1c46
--- /dev/null
+++ b/elasticsearch-6.1.1/src/main/java/org/elasticsearch/common/logging/Loggers.java
@@ -0,0 +1,154 @@
+/*
+ * Licensed to Elasticsearch under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch 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.elasticsearch.common.logging;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.Appender;
+import org.elasticsearch.common.settings.Settings;
+import org.elasticsearch.index.Index;
+import org.elasticsearch.index.shard.ShardId;
+import org.elasticsearch.node.Node;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static java.util.Arrays.asList;
+import static org.elasticsearch.common.util.CollectionUtils.asArrayList;
+
+/**
+ * A set of utilities around Logging.
+ */
+public class Loggers {
+
+    public static final String SPACE = " ";
+
+    public static Logger getLogger(Class<?> clazz, Settings settings, ShardId shardId, String... prefixes) {
+        return getLogger(clazz, settings, shardId.getIndex(), asArrayList(Integer.toString(shardId.id()), prefixes).toArray(new String[0]));
+    }
+
+    /**
+     * Just like {@link #getLogger(Class, org.elasticsearch.common.settings.Settings, ShardId, String...)} but String loggerName instead of
+     * Class.
+     */
+    public static Logger getLogger(String loggerName, Settings settings, ShardId shardId, String... prefixes) {
+        return getLogger(loggerName, settings,
+                asArrayList(shardId.getIndexName(), Integer.toString(shardId.id()), prefixes).toArray(new String[0]));
+    }
+
+    public static Logger getLogger(Class<?> clazz, Settings settings, Index index, String... prefixes) {
+        return getLogger(clazz, settings, asArrayList(SPACE, index.getName(), prefixes).toArray(new String[0]));
+    }
+
+    public static Logger getLogger(Class<?> clazz, Settings settings, String... prefixes) {
+        final List<String> prefixesList = prefixesList(settings, prefixes);
+        return getLogger(clazz, prefixesList.toArray(new String[prefixesList.size()]));
+    }
+
+    public static Logger getLogger(String loggerName, Settings settings, String... prefixes) {
+        final List<String> prefixesList = prefixesList(settings, prefixes);
+        return getLogger(loggerName, prefixesList.toArray(new String[prefixesList.size()]));
+    }
+
+    private static List<String> prefixesList(Settings settings, String... prefixes) {
+        List<String> prefixesList = new ArrayList<String>();
+        if (Node.NODE_NAME_SETTING.exists(settings)) {
+            prefixesList.add(Node.NODE_NAME_SETTING.get(settings));
+        }
+        if (prefixes != null && prefixes.length > 0) {
+            prefixesList.addAll(asList(prefixes));
+        }
+        return prefixesList;
+    }
+
+    public static Logger getLogger(Logger parentLogger, String s) {
+        assert parentLogger instanceof PrefixLogger;
+        return ESLoggerFactory.getLogger(((PrefixLogger)parentLogger).prefix(), parentLogger.getName() + s);
+    }
+
+    public static Logger getLogger(String s) {
+        return ESLoggerFactory.getLogger(s);
+    }
+
+    public static Logger getLogger(Class<?> clazz) {
+        return ESLoggerFactory.getLogger(clazz);
+    }
+
+    public static Logger getLogger(Class<?> clazz, String... prefixes) {
+        return ESLoggerFactory.getLogger(formatPrefix(prefixes), clazz);
+    }
+
+    public static Logger getLogger(String name, String... prefixes) {
+        return ESLoggerFactory.getLogger(formatPrefix(prefixes), name);
+    }
+
+    private static String formatPrefix(String... prefixes) {
+        String prefix = null;
+        if (prefixes != null && prefixes.length > 0) {
+            StringBuilder sb = new StringBuilder();
+            for (String prefixX : prefixes) {
+                if (prefixX != null) {
+                    if (prefixX.equals(SPACE)) {
+                        sb.append(" ");
+                    } else {
+                        sb.append("[").append(prefixX).append("]");
+                    }
+                }
+            }
+            if (sb.length() > 0) {
+                sb.append(" ");
+                prefix = sb.toString();
+            }
+        }
+        return prefix;
+    }
+
+    /**
+     * Set the level of the logger. If the new level is null, the logger will inherit it's level from its nearest ancestor with a non-null
+     * level.
+     */
+    public static void setLevel(Logger logger, String level) {
+        final Level l;
+        if (level == null) {
+            l = null;
+        } else {
+            l = Level.valueOf(level);
+        }
+        setLevel(logger, l);
+    }
+
+    public static void setLevel(Logger logger, Level level) {
+        // nothing to do
+    }
+
+    public static void addAppender(final Logger logger, final Appender appender) {
+        // nothing to do
+    }
+
+    public static void removeAppender(final Logger logger, final Appender appender) {
+        // nothing to do
+    }
+
+    public static Appender findAppender(final Logger logger, final Class<? extends Appender> clazz) {
+        // nothing to do
+        return null;
+    }
+
+}
diff --git a/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.Codec b/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.Codec
new file mode 100644
index 0000000..087c825
--- /dev/null
+++ b/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.Codec
@@ -0,0 +1,3 @@
+org.apache.lucene.codecs.lucene60.Lucene60Codec
+org.apache.lucene.codecs.lucene62.Lucene62Codec
+org.apache.lucene.codecs.lucene70.Lucene70Codec
diff --git a/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.DocValuesFormat b/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.DocValuesFormat
new file mode 100644
index 0000000..b069eb6
--- /dev/null
+++ b/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.DocValuesFormat
@@ -0,0 +1,2 @@
+org.apache.lucene.codecs.lucene54.Lucene54DocValuesFormat
+org.apache.lucene.codecs.lucene70.Lucene70DocValuesFormat
diff --git a/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.PostingsFormat b/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.PostingsFormat
new file mode 100644
index 0000000..3b5682a
--- /dev/null
+++ b/elasticsearch-6.1.1/src/main/resources/META-INF/org.apache.lucene.codecs.PostingsFormat
@@ -0,0 +1 @@
+org.apache.lucene.codecs.lucene50.Lucene50PostingsFormat
diff --git a/elasticsearch-6.1.1/src/main/resources/OSGI-INF/bundle.info b/elasticsearch-6.1.1/src/main/resources/OSGI-INF/bundle.info
new file mode 100644
index 0000000..af11bfd
--- /dev/null
+++ b/elasticsearch-6.1.1/src/main/resources/OSGI-INF/bundle.info
@@ -0,0 +1,17 @@
+\u001B[1mSYNOPSIS\u001B[0m
+    ${project.description}
+
+    Original Maven URL:
+        \u001B[33mmvn:${pkgGroupId}/${pkgArtifactId}/${pkgVersion}\u001B[0m
+
+\u001B[1mDESCRIPTION\u001B[0m
+    So, we build a web site or an application and want to add search to it, and
+    then it hits us: getting search working is hard. We want our search solution
+    to be fast, we want a painless setup and a completely free search schema, we
+    want to be able to index data simply using JSON over HTTP, we want our search
+    server to be always available, we want to be able to start with one machine
+    and scale to hundreds, we want real-time search, we want simple multi-tenancy,
+    and we want a solution that is built for the cloud.
+
+\u001B[1mSEE ALSO\u001B[0m
+    \u001B[36mhttp://www.elasticsearch.org\u001B[0m
diff --git a/elasticsearch-client-6.1.1/pom.xml b/elasticsearch-client-6.1.1/pom.xml
new file mode 100644
index 0000000..fd94f7d
--- /dev/null
+++ b/elasticsearch-client-6.1.1/pom.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.bundles</groupId>
+        <artifactId>bundles-pom</artifactId>
+        <version>14</version>
+        <relativePath>../bundles-pom/pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.apache.servicemix.bundles</groupId>
+    <artifactId>org.apache.servicemix.bundles.elasticsearch-client</artifactId>
+    <version>6.1.1_2-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+    <name>Apache ServiceMix :: Bundles :: elasticsearch-client</name>
+    <description>This OSGi bundle wraps elasticsearch-client ${pkgVersion} jar files.</description>
+
+    <scm>
+        <connection>scm:git:https://git-wip-us.apache.org/repos/asf/servicemix-bundles.git</connection>
+        <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/servicemix-bundles.git</developerConnection>
+        <url>https://git-wip-us.apache.org/repos/asf?p=servicemix-bundles.git</url>
+    <tag>HEAD</tag>
+  </scm>
+
+    <properties>
+        <pkgGroupId>org.elasticsearch.client</pkgGroupId>
+        <pkgVersion>6.1.1</pkgVersion>
+        <servicemix.osgi.export>
+            org.elasticsearch.client;version="${pkgVersion}";-split-package:=merge-first,
+            org.elasticsearch.client.sniff;version="${pkgVersion}";-split-package:=merge-first,
+            org.elasticsearch.transport.client;version="${pkgVersion}";-split-package:=merge-first,
+            org.elasticsearch.client.transport;version="${pkgVersion}";-split-package:=merge-first,
+            org.elasticsearch.client.support;version="${pkgVersion}";-split-package:=merge-first,
+            org.elasticsearch.client.node;version="${pkgVersion}";-split-package:=merge-first
+        </servicemix.osgi.export>
+        <servicemix.osgi.import.pkg>
+            *;resolution:=optional
+        </servicemix.osgi.import.pkg>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>elasticsearch-rest-client</artifactId>
+            <version>${pkgVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>elasticsearch-rest-client-sniffer</artifactId>
+            <version>${pkgVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>elasticsearch-rest-high-level-client</artifactId>
+            <version>${pkgVersion}</version>
+        </dependency>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>transport</artifactId>
+            <version>${pkgVersion}</version>
+        </dependency>
+
+        <!-- sources -->
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>elasticsearch-rest-client</artifactId>
+            <version>${pkgVersion}</version>
+            <classifier>sources</classifier>
+        </dependency>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>elasticsearch-rest-client-sniffer</artifactId>
+            <version>${pkgVersion}</version>
+            <classifier>sources</classifier>
+        </dependency>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>elasticsearch-rest-high-level-client</artifactId>
+            <version>${pkgVersion}</version>
+            <classifier>sources</classifier>
+        </dependency>
+        <dependency>
+            <groupId>${pkgGroupId}</groupId>
+            <artifactId>transport</artifactId>
+            <version>${pkgVersion}</version>
+            <classifier>sources</classifier>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <artifactSet>
+                                <includes>
+                                    <include>${pkgGroupId}:elasticsearch-rest-client</include>
+                                    <include>${pkgGroupId}:elasticsearch-rest-client-sniffer</include>
+                                    <include>${pkgGroupId}:elasticsearch-rest-high-level-client</include>
+                                    <include>${pkgGroupId}:transport</include>
+                                </includes>
+                            </artifactSet>
+                            <filters>
+                                <filter>
+                                    <artifact>${pkgGroupId}:elasticsearch-rest-client</artifact>
+                                    <excludes>
+                                        <exclude>**/*</exclude>
+                                    </excludes>
+                                </filter>
+                                <filter>
+                                    <artifact>${pkgGroupId}:elasticsearch-rest-client-sniffer</artifact>
+                                    <excludes>
+                                        <exclude>**/*</exclude>
+                                    </excludes>
+                                </filter>
+                                <filter>
+                                    <artifact>${pkgGroupId}:elasticsearch-rest-high-level-client</artifact>
+                                    <excludes>
+                                        <exclude>**/*</exclude>
+                                    </excludes>
+                                </filter>
+                                <filter>
+                                    <artifact>${pkgGroupId}:transport</artifact>
+                                    <excludes>
+                                        <exclude>**/*</exclude>
+                                    </excludes>
+                                </filter>
+                            </filters>
+                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+                            <createDependencyReducedPom>true</createDependencyReducedPom>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/elasticsearch-client-6.1.1/src/main/resources/OSGI-INF/bundle.info b/elasticsearch-client-6.1.1/src/main/resources/OSGI-INF/bundle.info
new file mode 100644
index 0000000..633bf8b
--- /dev/null
+++ b/elasticsearch-client-6.1.1/src/main/resources/OSGI-INF/bundle.info
@@ -0,0 +1,14 @@
+\u001B[1mSYNOPSIS\u001B[0m
+    ${project.description}
+
+    Original Maven URL:
+        \u001B[33mmvn:${pkgGroupId}/rest/${pkgVersion}\u001B[0m
+        \u001B[33mmvn:${pkgGroupId}/transport/${pkgVersion}\u001B[0m
+        \u001B[33mmvn:${pkgGroupId}/sniffer/${pkgVersion}\u001B[0m
+
+\u001B[1mDESCRIPTION\u001B[0m
+    This is the elasticsearch client bundle introduced in Elasticsearch 5.x.
+    It allows you to communicate with Elasticsearch instances.
+
+\u001B[1mSEE ALSO\u001B[0m
+    \u001B[36mhttp://www.elasticsearch.org\u001B[0m
diff --git a/pom.xml b/pom.xml
index 86c8de4..1b15c84 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,14 @@
     <name>Apache ServiceMix :: Bundles</name>
 
     <modules>
+        <module>pulsar-client-2.4.1</module>
+        <module>pulsar-client-admin-2.4.1</module>
+        <module>kafka-clients-2.3.0</module>
+        <module>kafka-clients-2.2.1</module>
+        <module>kafka-clients-2.1.1</module>
+        <module>kafka-clients-2.0.1</module>
+        <module>kafka-clients-1.1.1</module>
+        <module>spring-security-core-4.2.13.RELEASE</module>
         <module>elasticsearch-client-6.1.1</module>
         <module>elasticsearch-6.1.1</module>
         <module>fastjson-1.2.61</module>
