Skip to content

Commit

Permalink
MAILBOX-266 Update to ElasticSearch 2.2.1
Browse files Browse the repository at this point in the history
  • Loading branch information
chibenwa committed Apr 6, 2016
1 parent 6788206 commit a032429
Show file tree
Hide file tree
Showing 25 changed files with 245 additions and 915 deletions.
2 changes: 1 addition & 1 deletion README.txt
Expand Up @@ -115,7 +115,7 @@ $ docker run -d --name=cassandra cassandra:2.2.3


You need a running **ElasticSearch** in docker. To achieve this run : You need a running **ElasticSearch** in docker. To achieve this run :
```bash ```bash
$ docker run -d --name=elasticsearch elasticsearch:1.5.2 $ docker run -d --name=elasticsearch elasticsearch:2.2.1
``` ```


We need to provide the key we will use for TLS. For obvious reasons, this is not provided in this git. We need to provide the key we will use for TLS. For obvious reasons, this is not provided in this git.
Expand Down
10 changes: 2 additions & 8 deletions mailbox/elasticsearch/pom.xml
Expand Up @@ -223,12 +223,6 @@
<version>1.5.5</version> <version>1.5.5</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>4.10.4</version>
<scope>test</scope>
</dependency>
<dependency> <dependency>
<groupId>org.assertj</groupId> <groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId> <artifactId>assertj-core</artifactId>
Expand All @@ -244,12 +238,12 @@
<dependency> <dependency>
<groupId>org.elasticsearch</groupId> <groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId> <artifactId>elasticsearch</artifactId>
<version>1.5.2</version> <version>2.2.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.elasticsearch</groupId> <groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId> <artifactId>elasticsearch</artifactId>
<version>1.5.2</version> <version>2.2.1</version>
<scope>test</scope> <scope>test</scope>
<type>test-jar</type> <type>test-jar</type>
</dependency> </dependency>
Expand Down
Expand Up @@ -18,10 +18,15 @@
****************************************************************/ ****************************************************************/
package org.apache.james.mailbox.elasticsearch; package org.apache.james.mailbox.elasticsearch;


import java.net.InetAddress;
import java.net.UnknownHostException;

import org.elasticsearch.client.Client; import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.transport.InetSocketTransportAddress;


import com.google.common.base.Throwables;

public class ClientProviderImpl implements ClientProvider { public class ClientProviderImpl implements ClientProvider {


private final String host; private final String host;
Expand All @@ -31,10 +36,13 @@ public ClientProviderImpl(String host, int port) {
this.host = host; this.host = host;
this.port = port; this.port = port;
} }


@SuppressWarnings("resource")
public Client get() { public Client get() {
return new TransportClient() try {
.addTransportAddress(new InetSocketTransportAddress(host, port)); return TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));
} catch (UnknownHostException e) {
throw Throwables.propagate(e);
}
} }
} }
Expand Up @@ -18,17 +18,16 @@
****************************************************************/ ****************************************************************/
package org.apache.james.mailbox.elasticsearch; package org.apache.james.mailbox.elasticsearch;


import javax.inject.Inject;

import org.apache.commons.lang.NotImplementedException;
import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.deletebyquery.DeleteByQueryResponse;
import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.Client; import org.elasticsearch.client.Client;
import org.elasticsearch.index.query.QueryBuilders;


import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;


import javax.inject.Inject;

public class ElasticSearchIndexer { public class ElasticSearchIndexer {


public static final String MAILBOX_INDEX = "mailbox"; public static final String MAILBOX_INDEX = "mailbox";
Expand Down Expand Up @@ -66,13 +65,8 @@ public DeleteResponse deleteMessage(String id) {
} }
} }


public DeleteByQueryResponse deleteAllWithIdStarting(String idStart) { public void deleteAllWithIdStarting(String idStart) {
try (Client client = clientProvider.get()) { throw new NotImplementedException();
return client.prepareDeleteByQuery(MAILBOX_INDEX)
.setTypes(MESSAGE_TYPE)
.setQuery(QueryBuilders.prefixQuery("_id", idStart))
.get();
}
} }


private void checkArgument(String content) { private void checkArgument(String content) {
Expand Down
Expand Up @@ -19,25 +19,24 @@


package org.apache.james.mailbox.elasticsearch; package org.apache.james.mailbox.elasticsearch;


import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;

import java.io.IOException; import java.io.IOException;
import java.util.Optional;


import org.elasticsearch.client.Client; import org.elasticsearch.client.Client;
import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.indices.IndexAlreadyExistsException; import org.elasticsearch.indices.IndexAlreadyExistsException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;


import java.util.Optional;

public class IndexCreationFactory { public class IndexCreationFactory {


private static final Logger LOGGER = LoggerFactory.getLogger(IndexCreationFactory.class); private static final Logger LOGGER = LoggerFactory.getLogger(IndexCreationFactory.class);
private static final int DEFAULT_NB_SHARDS = 1;
private static final int DEFAULT_NB_REPLICA = 0;


public static ClientProvider createIndex(ClientProvider clientProvider, int nbShards, int nbReplica) { public static ClientProvider createIndex(ClientProvider clientProvider, int nbShards, int nbReplica) {
try { try {
return createIndex(clientProvider, normalSettings(nbShards, nbReplica)); return createIndex(clientProvider, generateSetting(nbShards, nbReplica));
} catch (IOException e) { } catch (IOException e) {
LOGGER.error("Error while creating index : ", e); LOGGER.error("Error while creating index : ", e);
return clientProvider; return clientProvider;
Expand All @@ -46,14 +45,14 @@ public static ClientProvider createIndex(ClientProvider clientProvider, int nbSh


public static ClientProvider createIndex(ClientProvider clientProvider) { public static ClientProvider createIndex(ClientProvider clientProvider) {
try { try {
return createIndex(clientProvider, settingForInMemory()); return createIndex(clientProvider, generateSetting(DEFAULT_NB_SHARDS, DEFAULT_NB_REPLICA));
} catch (IOException e) { } catch (IOException e) {
LOGGER.error("Error while creating index : ", e); LOGGER.error("Error while creating index : ", e);
return clientProvider; return clientProvider;
} }
} }


private static ClientProvider createIndex(ClientProvider clientProvider, XContentBuilder settings) { private static ClientProvider createIndex(ClientProvider clientProvider, Settings settings) {
try { try {
try (Client client = clientProvider.get()) { try (Client client = clientProvider.get()) {
client.admin() client.admin()
Expand All @@ -69,22 +68,11 @@ private static ClientProvider createIndex(ClientProvider clientProvider, XConten
return clientProvider; return clientProvider;
} }


public static XContentBuilder settingForInMemory() throws IOException { private static Settings generateSetting(int nbShards, int nbReplica) throws IOException {
return generateSetting(1, 0, Optional.of(jsonBuilder().startObject().field("type", "memory").endObject())); return Settings.builder()
} .put("number_of_shards", nbShards)

.put("number_of_replicas", nbReplica)
public static XContentBuilder normalSettings(int nbShards, int nbReplica) throws IOException{ .build();
return generateSetting(nbShards, nbReplica, Optional.empty());
}

private static XContentBuilder generateSetting(int nbShards, int nbReplica, Optional<XContentBuilder> store) throws IOException {
XContentBuilder contentBuilder = jsonBuilder().startObject()
.field("number_of_shards", nbShards)
.field("number_of_replicas", nbReplica);
if (store.isPresent()) {
contentBuilder.field("store", store.get());
}
return contentBuilder.endObject();
} }


} }

0 comments on commit a032429

Please sign in to comment.