Elasticsearch教程(六) elasticsearch Client创建

Elasticsearch  创建Client有几种方式。

首先在 Elasticsearch  的配置文件 elasticsearch.yml中。定义cluster.name。如下:

  1. cluster.name: sojson-application

创建方式一:

 
 
  1. import static org.elasticsearch.node.NodeBuilder.*;
  2. //节点方式创建。
  3. Node node = nodeBuilder().clusterName("yourclustername").node();
  4. Client client = node.client();
  5. /*
  6. 还有很多节点方式的创建方式,查看下面的官网地址。
  7. https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.0/node-client.html
  8. */

创建方式二:

  1. /**
  2. * 指定 ip地址创建
  3. */
  4. // on startup
  5. Client client = TransportClient.builder().build()
  6. .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300))
  7. .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host2"), 9300));
  8. // on shutdown
  9. client.close();

创建方式三:

 
 
  1. //按集群名称创建
  2. Settings settings = Settings.settingsBuilder()
  3. .put("cluster.name", "sojson-application").build();
  4. Client client = TransportClient.builder().settings(settings).build();
  5. //Add transport addresses and do something with the client...

创建方式四:

  1. //同一内网Ip段,嗅的方式自己查找,组成集群。
  2. Settings settings = Settings.settingsBuilder()
  3. .put("client.transport.sniff", true).build();
  4. TransportClient client = TransportClient.builder().settings(settings).build();
  5. /*
  6. 客户端允许嗅其余的集群,它将数据节点添加到列表的机器使用。在这种情况下要注意,将使用的IP地址的其他节点开始(“publish”地址)。启用它,设置client.transport.sniff为 true:
  7. */

其实还有很多方式。具体使用哪种,看自己需求。

我的工具类:

 
 
  1. package com.sojson.core.elasticsearch.utils;
  2. import java.net.InetAddress;
  3. import org.elasticsearch.client.Client;
  4. import org.elasticsearch.client.transport.TransportClient;
  5. import org.elasticsearch.common.settings.Settings;
  6. import org.elasticsearch.common.transport.InetSocketTransportAddress;
  7. import com.sojson.common.utils.LoggerUtils;
  8. import com.sojson.core.config.IConfig;
  9. public class ESTools {
  10. public final static Client client = build();
  11. public final static Class clazz = ESTools.class;
  12. /**
  13. * 创建一次
  14. * @return
  15. */
  16. private static Client build(){
  17. if(null != client){
  18. return client;
  19. }
  20. Client client = null;
  21. String ip = IConfig.get("es_ip");
  22. LoggerUtils.fmtDebug(clazz, "获取ESIP地址:%s", ip);
  23. try {
  24. LoggerUtils.fmtDebug(clazz, "创建Elasticsearch Client 开始");
  25. Settings settings = Settings
  26. .settingsBuilder()
  27. .put("cluster.name","sojson-application")
  28. .put("client.transport.sniff", true)
  29. .build();
  30. client = TransportClient.builder().settings(settings).build()
  31. .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ip), 9300));
  32. LoggerUtils.fmtDebug(clazz, "创建Elasticsearch Client 结束");
  33. } catch (Exception e) {
  34. LoggerUtils.fmtError(clazz, e, "创建Client异常");
  35. }
  36. return client;
  37. }
  38. /**
  39. * 关闭
  40. */
  41. public static void close(){
  42. if(null != client){
  43. try {
  44. client.close();
  45. } catch (Exception e) {
  46. }
  47. }
  48. }
  49. }

后面的讲解,我都是采用这个工具类。


猜你喜欢

转载自blog.csdn.net/superviser3000/article/details/80856531