Skip to content

Commit 1493b6c

Browse files
committed
1.0.0.RC2.2
1 parent 88e1161 commit 1493b6c

File tree

6 files changed

+40
-197
lines changed

6 files changed

+40
-197
lines changed

README.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ ES version Plugin Release date Command
2727
0.90.9 0.90.9.1 (S3) Jan 9, 2014 ./bin/plugin -install knapsack -url http://bit.ly/K8QwOJ
2828
0.90.10 0.90.10.1 Jan 14, 2014 ./bin/plugin -install knapsack -url http://bit.ly/1j5rOy2
2929
0.90.10 0.90.10.1 (S3) Jan 14, 2014 ./bin/plugin -install knapsack -url http://bit.ly/1d3kYkp
30-
1.0.0.RC2 1.0.0.RC2.1 Feb 3, 2014 ./bin/plugin -install knapsack -url http://bit.ly/1dYWcSR
31-
1.0.0.RC2 1.0.0.RC2.1 (S3) Feb 3, 2014 ./bin/plugin -install knapsack -url http://bit.ly/1bohsVv
30+
1.0.0.RC2 1.0.0.RC2.2 Feb 4, 2014 ./bin/plugin -install knapsack -url http://bit.ly/1bmSlzk
31+
1.0.0.RC2 1.0.0.RC2.2 (S3) Feb 4, 2014 ./bin/plugin -install knapsack -url http://bit.ly/1bZtEZK
3232
============= ================= ================= ===========================================================
3333

3434
The S3 version includes Amazon AWS API support, it can optionally transfer archives to S3.

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<groupId>org.xbib.elasticsearch.plugin</groupId>
99
<artifactId>elasticsearch-knapsack</artifactId>
10-
<version>0.20.6.1</version>
10+
<version>1.0.0.RC2.2</version>
1111

1212
<packaging>jar</packaging>
1313

@@ -58,7 +58,7 @@
5858
<properties>
5959
<github.global.server>github</github.global.server>
6060
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
61-
<elasticsearch.version>0.20.6</elasticsearch.version>
61+
<elasticsearch.version>1.0.0.RC2</elasticsearch.version>
6262
</properties>
6363

6464
<dependencies>
@@ -74,7 +74,7 @@
7474
<dependency>
7575
<groupId>org.xbib.elasticsearch.plugin</groupId>
7676
<artifactId>elasticsearch-support</artifactId>
77-
<version>${project.version}</version>
77+
<version>1.0.0.RC2.1</version>
7878
<type>jar</type>
7979
<scope>compile</scope>
8080
</dependency>

src/main/java/org/xbib/elasticsearch/action/RestExportAction.java

Lines changed: 13 additions & 184 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11

22
package org.xbib.elasticsearch.action;
33

4-
import org.elasticsearch.ElasticSearchIllegalArgumentException;
54
import org.elasticsearch.action.admin.cluster.health.ClusterHealthStatus;
65
import org.elasticsearch.action.admin.cluster.state.ClusterStateRequestBuilder;
76
import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
@@ -11,7 +10,6 @@
1110
import org.elasticsearch.action.search.SearchRequest;
1211
import org.elasticsearch.action.search.SearchResponse;
1312
import org.elasticsearch.action.search.SearchType;
14-
import org.elasticsearch.action.support.IgnoreIndices;
1513
import org.elasticsearch.client.Client;
1614
import org.elasticsearch.cluster.ClusterName;
1715
import org.elasticsearch.cluster.ClusterService;
@@ -21,6 +19,7 @@
2119
import org.elasticsearch.common.Strings;
2220
import org.elasticsearch.common.bytes.BytesArray;
2321
import org.elasticsearch.common.collect.ImmutableSet;
22+
import org.elasticsearch.common.hppc.cursors.ObjectCursor;
2423
import org.elasticsearch.common.inject.Inject;
2524
import org.elasticsearch.common.settings.Settings;
2625
import org.elasticsearch.common.settings.SettingsFilter;
@@ -33,21 +32,16 @@
3332
import org.elasticsearch.common.xcontent.XContentType;
3433
import org.elasticsearch.env.Environment;
3534
import org.elasticsearch.index.VersionType;
36-
import org.elasticsearch.index.query.QueryBuilders;
37-
import org.elasticsearch.index.query.QueryStringQueryBuilder;
3835
import org.elasticsearch.rest.BaseRestHandler;
3936
import org.elasticsearch.rest.RestChannel;
4037
import org.elasticsearch.rest.RestController;
4138
import org.elasticsearch.rest.RestHandler;
4239
import org.elasticsearch.rest.RestRequest;
4340
import org.elasticsearch.rest.XContentRestResponse;
4441
import org.elasticsearch.rest.XContentThrowableRestResponse;
45-
import org.elasticsearch.rest.action.support.RestActions;
46-
import org.elasticsearch.search.Scroll;
42+
import org.elasticsearch.rest.action.search.RestSearchAction;
4743
import org.elasticsearch.search.SearchHit;
4844

49-
import org.elasticsearch.search.builder.SearchSourceBuilder;
50-
import org.elasticsearch.search.sort.SortOrder;
5145
import org.xbib.elasticsearch.plugin.knapsack.KnapsackHelper;
5246
import org.xbib.elasticsearch.plugin.knapsack.KnapsackPacket;
5347
import org.xbib.elasticsearch.plugin.knapsack.KnapsackStatus;
@@ -68,7 +62,6 @@
6862
import static org.elasticsearch.client.Requests.createIndexRequest;
6963
import static org.elasticsearch.common.collect.Maps.newHashMap;
7064
import static org.elasticsearch.common.collect.Sets.newHashSet;
71-
import static org.elasticsearch.common.unit.TimeValue.parseTimeValue;
7265
import static org.elasticsearch.common.xcontent.ToXContent.EMPTY_PARAMS;
7366
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
7467
import static org.elasticsearch.rest.RestRequest.Method.GET;
@@ -106,7 +99,7 @@ public RestExportAction(Settings settings,
10699
this.clusterName = clusterName;
107100
this.settingsFilter = settingsFilter;
108101
this.knapsackHelper = new KnapsackHelper(client, clusterService);
109-
this.executor = EsExecutors.newScalingExecutorService(0, 10, 7L, TimeUnit.DAYS,
102+
this.executor = EsExecutors.newScaling(0, 10, 7L, TimeUnit.DAYS,
110103
EsExecutors.daemonThreadFactory(settings, "knapsack-export"));
111104

112105
controller.registerHandler(POST, "/_export", this);
@@ -305,7 +298,7 @@ public void run() {
305298
SearchRequest searchRequest;
306299
// override size = 10 default
307300
request.params().put("size", request.param("maxActionsPerBulkRequest", "1000"));
308-
searchRequest = parseSearchRequest(request);
301+
searchRequest = RestSearchAction.parseSearchRequest(request);
309302
searchRequest.listenerThreaded(false);
310303
SearchOperationThreading operationThreading =
311304
SearchOperationThreading.fromString(request.param("operation_threading"), null);
@@ -441,9 +434,9 @@ private String mapType(String index, String type) {
441434
private Map<String, String> getSettings(String... index) throws IOException {
442435
Map<String, String> settings = newHashMap();
443436
ClusterStateRequestBuilder request = client.admin().cluster().prepareState()
444-
.setFilterRoutingTable(true)
445-
.setFilterNodes(true)
446-
.setFilterIndices(index);
437+
.setRoutingTable(true)
438+
.setNodes(true)
439+
.setIndices(index);
447440
ClusterStateResponse response = request.execute().actionGet();
448441
MetaData metaData = response.getState().metaData();
449442
if (!metaData.getIndices().isEmpty()) {
@@ -465,17 +458,17 @@ private Map<String, String> getSettings(String... index) throws IOException {
465458
private Map<String, String> getMapping(String index, Set<String> types) throws IOException {
466459
Map<String, String> mappings = newHashMap();
467460
ClusterStateRequestBuilder request = client.admin().cluster().prepareState()
468-
.setFilterRoutingTable(true)
469-
.setFilterNodes(true);
461+
.setRoutingTable(true)
462+
.setNodes(true);
470463
if (!"_all".equals(index)) {
471-
request.setFilterIndices(index);
464+
request.setIndices(index);
472465
}
473466
ClusterStateResponse response = request.execute().actionGet();
474467
MetaData metaData = response.getState().getMetaData();
475468
if (!metaData.getIndices().isEmpty()) {
476469
for (IndexMetaData indexMetaData : metaData) {
477-
for (Map.Entry<String,MappingMetaData> c : indexMetaData.getMappings().entrySet()) {
478-
MappingMetaData mappingMetaData = c.getValue();
470+
for (ObjectCursor<MappingMetaData> c : indexMetaData.getMappings().values()) {
471+
MappingMetaData mappingMetaData = c.value;
479472
if (types == null || types.isEmpty() || types.contains(mappingMetaData.type())) {
480473
final XContentBuilder builder = jsonBuilder();
481474
builder.startObject();
@@ -530,7 +523,7 @@ public void handleRequest(RestRequest request, RestChannel channel) {
530523
builder.endArray()
531524
.endObject();
532525
executor.shutdownNow();
533-
executor = EsExecutors.newScalingExecutorService(0, 10, 7L, TimeUnit.DAYS,
526+
executor = EsExecutors.newScaling(0, 10, 7L, TimeUnit.DAYS,
534527
EsExecutors.daemonThreadFactory(settings, "knapsack-export"));
535528
channel.sendResponse(new XContentRestResponse(request, OK, builder));
536529
} catch (IOException ioe) {
@@ -543,168 +536,4 @@ public void handleRequest(RestRequest request, RestChannel channel) {
543536
}
544537
}
545538

546-
547-
private SearchRequest parseSearchRequest(RestRequest request) {
548-
String[] indices = RestActions.splitIndices(request.param("index"));
549-
SearchRequest searchRequest = new SearchRequest(indices);
550-
// get the content, and put it in the body
551-
if (request.hasContent()) {
552-
searchRequest.source(request.content(), request.contentUnsafe());
553-
} else {
554-
String source = request.param("source");
555-
if (source != null) {
556-
searchRequest.source(source);
557-
}
558-
}
559-
// add extra source based on the request parameters
560-
searchRequest.extraSource(parseSearchSource(request));
561-
562-
searchRequest.searchType(request.param("search_type"));
563-
564-
String scroll = request.param("scroll");
565-
if (scroll != null) {
566-
searchRequest.scroll(new Scroll(parseTimeValue(scroll, null)));
567-
}
568-
569-
searchRequest.types(RestActions.splitTypes(request.param("type")));
570-
searchRequest.queryHint(request.param("query_hint"));
571-
searchRequest.routing(request.param("routing"));
572-
searchRequest.preference(request.param("preference"));
573-
if (request.hasParam("ignore_indices")) {
574-
searchRequest.ignoreIndices(IgnoreIndices.fromString(request.param("ignore_indices")));
575-
}
576-
577-
return searchRequest;
578-
}
579-
580-
private SearchSourceBuilder parseSearchSource(RestRequest request) {
581-
SearchSourceBuilder searchSourceBuilder = null;
582-
String queryString = request.param("q");
583-
if (queryString != null) {
584-
QueryStringQueryBuilder queryBuilder = QueryBuilders.queryString(queryString);
585-
queryBuilder.defaultField(request.param("df"));
586-
queryBuilder.analyzer(request.param("analyzer"));
587-
queryBuilder.analyzeWildcard(request.paramAsBoolean("analyze_wildcard", false));
588-
queryBuilder.lowercaseExpandedTerms(request.paramAsBoolean("lowercase_expanded_terms", true));
589-
queryBuilder.lenient(request.paramAsBooleanOptional("lenient", null));
590-
String defaultOperator = request.param("default_operator");
591-
if (defaultOperator != null) {
592-
if ("OR".equals(defaultOperator)) {
593-
queryBuilder.defaultOperator(QueryStringQueryBuilder.Operator.OR);
594-
} else if ("AND".equals(defaultOperator)) {
595-
queryBuilder.defaultOperator(QueryStringQueryBuilder.Operator.AND);
596-
} else {
597-
throw new ElasticSearchIllegalArgumentException("Unsupported defaultOperator [" + defaultOperator + "], can either be [OR] or [AND]");
598-
}
599-
}
600-
if (searchSourceBuilder == null) {
601-
searchSourceBuilder = new SearchSourceBuilder();
602-
}
603-
searchSourceBuilder.query(queryBuilder);
604-
}
605-
606-
int from = request.paramAsInt("from", -1);
607-
if (from != -1) {
608-
if (searchSourceBuilder == null) {
609-
searchSourceBuilder = new SearchSourceBuilder();
610-
}
611-
searchSourceBuilder.from(from);
612-
}
613-
int size = request.paramAsInt("size", -1);
614-
if (size != -1) {
615-
if (searchSourceBuilder == null) {
616-
searchSourceBuilder = new SearchSourceBuilder();
617-
}
618-
searchSourceBuilder.size(size);
619-
}
620-
621-
if (request.hasParam("explain")) {
622-
if (searchSourceBuilder == null) {
623-
searchSourceBuilder = new SearchSourceBuilder();
624-
}
625-
searchSourceBuilder.explain(request.paramAsBooleanOptional("explain", null));
626-
}
627-
if (request.hasParam("version")) {
628-
if (searchSourceBuilder == null) {
629-
searchSourceBuilder = new SearchSourceBuilder();
630-
}
631-
searchSourceBuilder.version(request.paramAsBooleanOptional("version", null));
632-
}
633-
if (request.hasParam("timeout")) {
634-
if (searchSourceBuilder == null) {
635-
searchSourceBuilder = new SearchSourceBuilder();
636-
}
637-
searchSourceBuilder.timeout(request.paramAsTime("timeout", null));
638-
}
639-
640-
String sField = request.param("fields");
641-
if (sField != null) {
642-
if (searchSourceBuilder == null) {
643-
searchSourceBuilder = new SearchSourceBuilder();
644-
}
645-
if (!Strings.hasText(sField)) {
646-
searchSourceBuilder.noFields();
647-
} else {
648-
String[] sFields = Strings.splitStringByCommaToArray(sField);
649-
if (sFields != null) {
650-
for (String field : sFields) {
651-
searchSourceBuilder.field(field);
652-
}
653-
}
654-
}
655-
}
656-
657-
String sSorts = request.param("sort");
658-
if (sSorts != null) {
659-
if (searchSourceBuilder == null) {
660-
searchSourceBuilder = new SearchSourceBuilder();
661-
}
662-
String[] sorts = Strings.splitStringByCommaToArray(sSorts);
663-
for (String sort : sorts) {
664-
int delimiter = sort.lastIndexOf(":");
665-
if (delimiter != -1) {
666-
String sortField = sort.substring(0, delimiter);
667-
String reverse = sort.substring(delimiter + 1);
668-
if ("asc".equals(reverse)) {
669-
searchSourceBuilder.sort(sortField, SortOrder.ASC);
670-
} else if ("desc".equals(reverse)) {
671-
searchSourceBuilder.sort(sortField, SortOrder.DESC);
672-
}
673-
} else {
674-
searchSourceBuilder.sort(sort);
675-
}
676-
}
677-
}
678-
679-
String sIndicesBoost = request.param("indices_boost");
680-
if (sIndicesBoost != null) {
681-
if (searchSourceBuilder == null) {
682-
searchSourceBuilder = new SearchSourceBuilder();
683-
}
684-
String[] indicesBoost = Strings.splitStringByCommaToArray(sIndicesBoost);
685-
for (String indexBoost : indicesBoost) {
686-
int divisor = indexBoost.indexOf(',');
687-
if (divisor == -1) {
688-
throw new ElasticSearchIllegalArgumentException("Illegal index boost [" + indexBoost + "], no ','");
689-
}
690-
String indexName = indexBoost.substring(0, divisor);
691-
String sBoost = indexBoost.substring(divisor + 1);
692-
try {
693-
searchSourceBuilder.indexBoost(indexName, Float.parseFloat(sBoost));
694-
} catch (NumberFormatException e) {
695-
throw new ElasticSearchIllegalArgumentException("Illegal index boost [" + indexBoost + "], boost not a float number");
696-
}
697-
}
698-
}
699-
700-
String sStats = request.param("stats");
701-
if (sStats != null) {
702-
if (searchSourceBuilder == null) {
703-
searchSourceBuilder = new SearchSourceBuilder();
704-
}
705-
searchSourceBuilder.stats(Strings.splitStringByCommaToArray(sStats));
706-
}
707-
708-
return searchSourceBuilder;
709-
}
710539
}

src/main/java/org/xbib/elasticsearch/action/RestImportAction.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11

22
package org.xbib.elasticsearch.action;
33

4-
import org.elasticsearch.ElasticSearchIllegalStateException;
54
import org.elasticsearch.action.admin.cluster.health.ClusterHealthStatus;
65
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
76
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
@@ -31,6 +30,7 @@
3130
import org.elasticsearch.rest.XContentRestResponse;
3231
import org.elasticsearch.rest.XContentThrowableRestResponse;
3332

33+
import org.xbib.elasticsearch.plugin.knapsack.KnapsackException;
3434
import org.xbib.elasticsearch.plugin.knapsack.KnapsackHelper;
3535
import org.xbib.elasticsearch.plugin.knapsack.KnapsackPacket;
3636
import org.xbib.elasticsearch.plugin.knapsack.KnapsackStatus;
@@ -83,7 +83,7 @@ public RestImportAction(Settings settings,
8383
this.environment = environment;
8484
this.clusterName = clusterName;
8585
this.knapsackHelper = new KnapsackHelper(client, clusterService);
86-
this.executor = EsExecutors.newScalingExecutorService(0, 10, 7L, TimeUnit.DAYS,
86+
this.executor = EsExecutors.newScaling(0, 10, 7L, TimeUnit.DAYS,
8787
EsExecutors.daemonThreadFactory(settings, "knapsack-import"));
8888

8989
controller.registerHandler(POST, "/_import", this);
@@ -227,7 +227,7 @@ public void run() {
227227
}
228228
String[] entry = KnapsackPacket.decodeName(packet.name());
229229
if (entry.length < 2) {
230-
throw new ElasticSearchIllegalStateException("archive entry too short, can't import");
230+
throw new KnapsackException("archive entry too short, can't import");
231231
}
232232
String index = entry[0];
233233
String type = entry[1];
@@ -311,7 +311,7 @@ private void indexPackets(Map<String, Packet<String>> packets) throws IOExceptio
311311
String entryName = packets.values().iterator().next().name();
312312
String[] entry = KnapsackPacket.decodeName(entryName);
313313
if (entry.length < 3) {
314-
throw new ElasticSearchIllegalStateException("entry too short: " + entryName);
314+
throw new KnapsackException("entry too short: " + entryName);
315315
}
316316
String index = entry[0];
317317
String type = entry[1];
@@ -324,7 +324,7 @@ private void indexPackets(Map<String, Packet<String>> packets) throws IOExceptio
324324
try {
325325
CreateIndexResponse response = bulkClient.client().admin().indices()
326326
.create(createIndexRequest).actionGet();
327-
if (!response.getAcknowledged()) {
327+
if (!response.isAcknowledged()) {
328328
logger.warn("index creation was not acknowledged");
329329
}
330330
} catch (IndexAlreadyExistsException e) {
@@ -425,7 +425,7 @@ public void handleRequest(RestRequest request, RestChannel channel) {
425425
}
426426
builder.endArray().endObject();
427427
executor.shutdownNow();
428-
executor = EsExecutors.newScalingExecutorService(0,10, 7L, TimeUnit.DAYS,
428+
executor = EsExecutors.newScaling(0,10, 7L, TimeUnit.DAYS,
429429
EsExecutors.daemonThreadFactory(settings, "knapsack-import"));
430430
channel.sendResponse(new XContentRestResponse(request, OK, builder));
431431
} catch (IOException ioe) {

0 commit comments

Comments
 (0)