用于改善单元测试的 elasticsearch 启动时间的设置?

eve*_*992 7 elasticsearch

我正在编写启动 elasticsearch 6.4 单节点集群的测试,以确保我的查询按预期运行。集群大约需要 10 秒才能启动我的测试 RestHighLevelClient 以 ping 它而没有连接错误

Process proc = new ProcessBuilder("elasticsearch").start();
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
  new HttpHost('localhost', 9200, 'http'),
  new HttpHost('localhost', 9201, 'http'),

));

// wait for cluster, takes about 10 seconds in practice.
do {
  try {
    client.ping(RequestOptions.DEFAULT);
    break;
  } catch (IOException ex) { }
} while (true);
Run Code Online (Sandbox Code Playgroud)

是否可以更改设置以缩短启动时间?

  • 我不需要在测试运行中保留索引,所以索引可以保存在内存中。我没有看到memory在上市6.4存储类型
  • 是否存在导致整个集群在不写入磁盘的情况下运行的设置(禁用日志记录、禁用文件存储、禁用 pid/状态)?
  • 集群将是单节点的,因此我可以禁用发现,但我还没有找到该设置。编辑:discovery.type=single-node在 6.4

Val*_*Val 7

没有办法将所有索引存储到内存中。index.store.type: memory在 ES 1.x 中确实存在,但在 ES 2.0 中很久以前就消失了。

您可以通过修改 te文件并将所有记录器log4j2.properties设置为 OFF 来禁用所有日志记录(并可选择使用 NullAppender)

logger.action.level = OFF
rootLogger.level = OFF
logger.deprecation.level = OFF
logger.index_search_slowlog_rolling.level = OFF
logger.index_indexing_slowlog.level = OFF
logger.xpack_security_audit_logfile.level = OFF
Run Code Online (Sandbox Code Playgroud)

关于禁用发现,您通过设置得到了正确的结果discovery.type=single-node