0

你好,

也许我对弹性搜索的内部缺乏一些了解。我想做的是创建一个嵌入式 ES 节点,但在我的应用程序的多个启动中保持索引的持久性。

这是我的启动代码(在每次应用程序启动时执行):

Node node = nodeBuilder().build().start();

然后我做一些索引/查询,有时,应用程序会停止。现在,如果我重新启动应用程序,我的所有数据都会丢失,并且将在文件系统上创建一个新的空节点。

是否可以使用 Java API 重用以前创建的节点及其数据?

4

2 回答 2

0

我刚刚找到了解决我的问题的方法:可以在设置中设置节点的名称。如果这样做,节点及其数据将在重新启动时重新使用。

ImmutableSettings.Builder settings
            = ImmutableSettings.builder();
settings.put("node.name", "nameOfTheNode"); // set the name to reuse the node
settings.put("path.data", "/opt/elasticsearch/data"); // the data will be stored in this folder

Node node = NodeBuilder.nodeBuilder()
        .settings(settings)
        .clusterName("nameOfTheCluser")
        .data(true) // make the node store data
        .node()
        .start();
于 2015-07-16T17:26:51.900 回答
0

您的实现会创建一个“透明”节点,直到程序关闭。

为了使事情独立,您必须从这里下载弹性搜索服务器。它实际上会将节点保留在硬盘中,并提供一个 api 供您访问它们。

话虽如此,您必须使用TransportClient()将您的 java 应用程序与您的服务器连接起来。所有信息都将保存在弹性搜索服务器中,因此许多客户端都可以访问。您甚至可以使用 curl 查询您的服务器

于 2015-07-16T12:20:50.967 回答