package io.searchbox.core;
import io.searchbox.common.AbstractIntegrationTest;
import org.elasticsearch.action.DocWriteResponse;
import org.elasticsearch.test.ESIntegTestCase;
import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Test;
import java.io.IOException;
/**
* @author Dogukan Sonmez
* @author cihat keser
*/
@ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.TEST, numDataNodes = 1)
@FixMethodOrder
public class CountIntegrationTest extends AbstractIntegrationTest {
private static final double DELTA = 1e-15;
private static final String INDEX_1 = "cvbank";
private static final String INDEX_2 = "office_docs";
@Before
public void setup() {
createIndex(INDEX_1, INDEX_2);
}
@Test
public void countWithMultipleIndices() throws IOException {
String query = "{\n" +
" \"query\" : {\n" +
" \"term\" : { \"user\" : \"kimchy\" }\n" +
" }\n" +
"}";
ensureSearchable(INDEX_1, INDEX_2);
CountResult result = client.execute(new Count.Builder()
.query(query)
.addIndex(INDEX_1)
.addIndex(INDEX_2)
.build());
assertTrue(result.getErrorMessage(), result.isSucceeded());
assertEquals(0.0, result.getCount(), DELTA);
assertEquals("0", result.getSourceAsString());
}
@Test
public void countWithValidTermQueryOnAllIndices() throws IOException {
String query = "{\n" +
" \"query\" : {\n" +
" \"term\" : { \"user\" : \"kimchy\" }\n" +
" }\n" +
"}";
ensureSearchable(INDEX_1, INDEX_2);
CountResult result = client.execute(new Count.Builder().query(query).build());
assertTrue(result.getErrorMessage(), result.isSucceeded());
assertEquals(0.0, result.getCount(), DELTA);
assertEquals("0", result.getSourceAsString());
}
@Test
public void countWithValidTermQueryOnSingleIndex() throws IOException {
String type = "candidate";
String query = "{\n" +
" \"query\" : {\n" +
" \"term\" : { \"user\" : \"kimchy\" }\n" +
" }\n" +
"}";
assertTrue(index(INDEX_1, type, "aaa1", "{ \"user\":\"kimchy\" }").getResult().equals(DocWriteResponse.Result.CREATED));
refresh();
ensureSearchable(INDEX_1);
Count count = new Count.Builder()
.query(query)
.addIndex(INDEX_1)
.addType("candidate")
.build();
CountResult result = client.execute(count);
assertTrue(result.getErrorMessage(), result.isSucceeded());
assertEquals(1.0, result.getCount(), DELTA);
assertEquals("1", result.getSourceAsString());
}
}