您好,
也许我对弹性搜索的内部缺乏一些了解。我想要做的是创建一个嵌入式ES节点,但保持索引在我的应用程序的多个初创公司中保持不变。
这是我的启动代码(在每个应用程序启动时执行):
Node node = nodeBuilder().build().start();
然后我做一些索引/查询,在某个时候,应用程序将停止。现在,如果我重新启动应用程序,我的所有数据都将丢失,并且将在文件系统上创建一个新的空节点。
是否可以使用Java API将以前创建的节点与其数据一起重用?
答案 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();