- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
对于其他 Elasticsearch 开发人员来说,这可能是一个非常简单(且愚蠢)的问题,这两者之间有什么区别?
我正在从 Java webapp 连接到远程 Elasticsearch 服务器,到目前为止我一直在使用 TransportClient,但我想知道 NodeBuilder 是否可以用于,或者 NodeBuilder 是否应该仅用于嵌入式客户端?
如果两者中的任何一个都可以用来连接远程ES服务器,那么在内存和性能方面应该哪个更好?
如果有人能指出一个连接到远程 ES 服务器的 NodeBuilder 示例,那就太好了,因为我没有幸运找到一个。
谢谢。
最佳答案
NodeBuilder 也可以用来连接集群。
Node node = nodeBuilder().clusterName("yourcluster").client(true).node();
Client client = node.client();
它将作为另一个节点加入集群,并了解整个拓扑。使用节点,您可以使用多播来发现其他正在运行的节点。
我的看法是,我更喜欢使用TransportClient
而不是NodeClient
,因为当TransportClient 停止时,其他集群节点不会收到无用的信息。当 NodeClient 停止时,每个节点都必须知道这一点,即使他们不必管理它,因为它不保存任何数据。此外,我在 Debug模式下看到 NodeClient 启动的 Threads
比 TransportCLient 多。所以我认为 TransportClient 的内存占用更少。
顺便说一下,如果你使用的是 Spring,你可以使用 spring-elasticsearch工厂。如果没有,您可以随时查看源代码,了解我如何管理 NodeClient 与 TransportClient。
希望这会有所帮助。
EDIT 2016-03-09:不应使用 NodeClient
。如果需要,人们应该创建一个客户端节点(使用 node.data: false
和 node.master: false
启动一个 elasticsearch 节点)并使用 TransportClient
在本地连接它。
关于java - elasticsearch NodeBuilder vs TranportClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15398861/
我添加了 Gradle 依赖项,compile 'org.elasticsearch.client:transport:5.2.1'。 我在同步 Gradle 构建时收到警告列表。 Warning:W
对于其他 Elasticsearch 开发人员来说,这可能是一个非常简单(且愚蠢)的问题,这两者之间有什么区别? 我正在从 Java webapp 连接到远程 Elasticsearch 服务器,到目
我正在尝试实现 Elasticsearch API。我在系统接受 nodeBuilder 时遇到错误。这是代码- import org.elasticsearch.action.index.Index
我正在尝试使用 Config.groovy 中的构建器语法绘制用于导航的站点结构,如下所示: com.foo.demo.siteStructure = NodeBuilder.newInstance(
Groovys 的 NodeBuilder 使用 def someBuilder = new NodeBuilder() someBuilder.people(kind:'folks', groovy
我是一名优秀的程序员,十分优秀!