Skip to content

Commit

Permalink
Merge branch 'logzio' of https://github.com/logzio/Jest into logzio
Browse files Browse the repository at this point in the history
  • Loading branch information
roiravhon committed Nov 22, 2017
2 parents 94faa84 + 708e54c commit dfbb61b
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 0 deletions.
64 changes: 64 additions & 0 deletions jest-common/src/main/java/io/searchbox/fields/FieldStats.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package io.searchbox.fields;

import io.searchbox.action.AbstractAction;
import io.searchbox.action.GenericResultAbstractAction;
import io.searchbox.params.Parameters;

import java.util.HashMap;
import java.util.Map;

public class FieldStats extends GenericResultAbstractAction {

protected FieldStats(FieldStats.Builder builder) {
super(builder);

this.indexName = builder.index;

Map<String, Object> fieldStatsBody = new HashMap<>();
fieldStatsBody.put("fields", builder.fields);

this.payload = fieldStatsBody;

setURI(buildURI());
}

@Override
public String getRestMethodName() {
return "POST";
}

@Override
protected String buildURI() {
String buildURI = super.buildURI();
if (buildURI.isEmpty())
return "_field_stats";

return buildURI + "/_field_stats";
}


public static class Builder extends AbstractAction.Builder<FieldStats, FieldStats.Builder> {

private String index;
private Object fields;

public Builder(Object fields) {
this.fields = fields;
}

public FieldStats.Builder setIndex(String index) {
this.index = index;
return this;
}

public FieldStats.Builder setLevel(String level) {
parameters.put(Parameters.LEVEL, level);
return this;
}

@Override
public FieldStats build() {
return new FieldStats(this);
}
}
}
3 changes: 3 additions & 0 deletions jest-common/src/main/java/io/searchbox/params/Parameters.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ private Parameters() {

public static final String SCROLL = "scroll";

// indices, cluster (default)
public static final String LEVEL = "level";

public static final String SCROLL_ID = "scroll_id";

public static final String SEARCH_TYPE = "search_type";
Expand Down
39 changes: 39 additions & 0 deletions jest-common/src/test/java/io/searchbox/fields/FieldsStatsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package io.searchbox.fields;

import com.google.gson.Gson;
import org.junit.Test;

import java.util.Collections;
import java.util.List;

import static org.junit.Assert.assertEquals;

public class FieldsStatsTest {
static final String TEST_FIELD = "test_name";
static final String INDEX = "twitter";
static final List FIELDS = Collections.singletonList(TEST_FIELD);

@Test
public void testBasicUriGeneration() {
FieldStats fieldStats = new FieldStats.Builder(FIELDS).setIndex(INDEX).build();
assertEquals("POST", fieldStats.getRestMethodName());
assertEquals(INDEX + "/_field_stats", fieldStats.getURI());
assertEquals("{\"fields\":[\"" + TEST_FIELD + "\"]}", fieldStats.getData(new Gson()));
}

@Test
public void testBasicUriGenerationNoIndex() {
FieldStats fieldStats = new FieldStats.Builder(FIELDS).build();
assertEquals("POST", fieldStats.getRestMethodName());
assertEquals("_field_stats", fieldStats.getURI());
assertEquals("{\"fields\":[\"" + TEST_FIELD + "\"]}", fieldStats.getData(new Gson()));
}

@Test
public void testBasicUriGenerationWithLevel() {
FieldStats fieldStats = new FieldStats.Builder(FIELDS).setIndex(INDEX).setLevel("indices").build();
assertEquals("POST", fieldStats.getRestMethodName());
assertEquals(INDEX + "/_field_stats?level=indices", fieldStats.getURI());
assertEquals("{\"fields\":[\"" + TEST_FIELD + "\"]}", fieldStats.getData(new Gson()));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package io.searchbox.fields;

import com.google.common.collect.ImmutableMap;
import io.searchbox.client.JestResult;
import io.searchbox.common.AbstractIntegrationTest;
import io.searchbox.core.DocumentResult;
import io.searchbox.core.Index;
import org.elasticsearch.test.ESIntegTestCase;
import org.junit.Test;

import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;

@ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.SUITE, numDataNodes = 1)
public class FieldStatsIntegrationTest extends AbstractIntegrationTest {

static final String INDEX = "twitter";
static final String TYPE = "tweet";
static final String TEST_FIELD = "test_name";
static final List FIELDS = Collections.singletonList(TEST_FIELD);

@Test
public void testFieldStats() throws IOException {

Map<String, String> source = ImmutableMap.of(
TEST_FIELD, "testFieldStats");

DocumentResult documentResult = client.execute(
new Index.Builder(source)
.index(INDEX)
.type(TYPE)
.refresh(true)
.build()
);

assertTrue(documentResult.getErrorMessage(), documentResult.isSucceeded());

FieldStats fieldStats = new FieldStats.Builder(FIELDS).setIndex(INDEX).build();

JestResult fieldStatsResult = client.execute(fieldStats);

assertTrue(fieldStatsResult.getErrorMessage(), fieldStatsResult.isSucceeded());
}

}

0 comments on commit dfbb61b

Please sign in to comment.