Elasticsearch Java API:创建amd重用节点

时间:2015-07-16 11:46:59

标签: java elasticsearch elasticsearch-java-api

您好,

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

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

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

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

是否可以使用Java API将以前创建的节点与其数据一起重用?

2 个答案:

答案 0 :(得分:0)

您的实现会在程序关闭之前创建一个“透明”节点。

要使事物独立,您必须从here下载弹性搜索服务器。它实际上将节点保存在硬盘中并为您提供访问它们的API。

话虽如此,您必须使用TransportClient()将您的Java应用程序与您的服务器连接。 所有信息都将保存到弹性搜索服务器,因此许多客户都可以访问。你甚至可以query your server with curl

答案 1 :(得分: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();