package org.elasticsearch.test.integration.search.msearch;
import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.test.integration.AbstractNodesTests;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
/**
*/
@Test
public class SimpleMultiSearchTests extends AbstractNodesTests {
private Client client;
@BeforeClass
public void createNodes() throws Exception {
Settings settings = settingsBuilder().put("number_of_shards", 3).put("number_of_replicas", 0).build();
startNode("node1", settings);
startNode("node2", settings);
client = getClient();
}
@AfterClass
public void closeNodes() {
client.close();
closeAllNodes();
}
protected Client getClient() {
return client("node1");
}
@Test
public void simpleMultiSearch() {
client.admin().indices().prepareDelete().execute().actionGet();
client.prepareIndex("test", "type", "1").setSource("field", "xxx").execute().actionGet();
client.prepareIndex("test", "type", "2").setSource("field", "yyy").execute().actionGet();
client.admin().indices().prepareRefresh().execute().actionGet();
MultiSearchResponse response = client.prepareMultiSearch()
.add(client.prepareSearch("test").setQuery(QueryBuilders.termQuery("field", "xxx")))
.add(client.prepareSearch("test").setQuery(QueryBuilders.termQuery("field", "yyy")))
.add(client.prepareSearch("test").setQuery(QueryBuilders.matchAllQuery()))
.execute().actionGet();
assertThat(response.responses().length, equalTo(3));
assertThat(response.responses()[0].response().hits().totalHits(), equalTo(1l));
assertThat(response.responses()[1].response().hits().totalHits(), equalTo(1l));
assertThat(response.responses()[2].response().hits().totalHits(), equalTo(2l));
assertThat(response.responses()[0].response().hits().getAt(0).id(), equalTo("1"));
assertThat(response.responses()[1].response().hits().getAt(0).id(), equalTo("2"));
}
}