package core.framework.test.search;
import core.framework.api.util.StopWatch;
import core.framework.impl.search.ElasticSearchImpl;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.network.NetworkModule;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.env.Environment;
import org.elasticsearch.node.NodeValidationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.file.Path;
/**
* @author neo
*/
public class MockElasticSearch extends ElasticSearchImpl {
private final Logger logger = LoggerFactory.getLogger(MockElasticSearch.class);
private final Path dataPath;
public MockElasticSearch(Path dataPath) {
this.dataPath = dataPath;
}
@Override
protected Client createClient() {
StopWatch watch = new StopWatch();
try {
Settings.Builder settings = Settings.builder();
settings.put(NetworkModule.TRANSPORT_TYPE_SETTING.getKey(), NetworkModule.LOCAL_TRANSPORT)
.put(NetworkModule.HTTP_ENABLED.getKey(), false)
.put(Environment.PATH_HOME_SETTING.getKey(), dataPath);
MockNode node = new MockNode(settings.build());
node.start();
return node.client();
} catch (NodeValidationException e) {
throw new Error(e);
} finally {
logger.info("create local elasticsearch node, dataPath={}, elapsedTime={}", dataPath, watch.elapsedTime());
}
}
}