配置Elasticsearch for Java集成测试

时间:2015-08-05 17:50:49

标签: java elasticsearch

我继承了一个包含大量睡眠语句的项目,允许Elasticsearch在其集成测试中进行索引......深深叹息。

大部分时间我在Elasticsearch中获得了少量数据,而且我真的很想等待0。我在JVM中为我的测试设置了一个节点,如下所示:

ImmutableSettings.Builder elasticsearchSettings = ImmutableSettings.settingsBuilder()
        .put("http.enabled", "false")
        .put("path.data", dataDirectory)
        .put("script.disable_dynamic", "false")
        .put("script.inline", "on")
        .put("script.indexed", "on")
        .put(EsExecutors.PROCESSORS, 1)
        .put("index.store.type", "ram")
        .put("gateway.type", "none")
        ;

node = nodeBuilder()
        .clusterName("cluster_" + (new java.util.Random().nextInt()))
        .local(true)
        .data(true)
        .settings(elasticsearchSettings.build())
        .node();

Client client = node.client();

Settings indexSettings = ImmutableSettings.settingsBuilder()
        .put("number_of_shards", 1)
        .put("number_of_replicas", 1)
        .build();
CreateIndexRequest indexRequest = new CreateIndexRequest(
        "test_inst", indexSettings);

client.admin().indices().create(indexRequest).actionGet();

但是,当我减少睡眠时间时,我仍然会遇到很多失败,而一些针对外部弹性搜索实例的查询会因JVM中运行的节点而失败。

我尝试使用以下方式强制刷新:

elasticSearchClientUtil.getClient().admin().indices().prepareRefresh().execute().actionGet();

但这似乎无助于解决问题。有些故障是间歇性的,这对我来说意味着我会受到1秒刷新间隔的影响。

有没有人对如何强制建立索引有任何建议,以便我可以加快这些测试的速度?

0 个答案:

没有答案