• Java与ElasticSearch的交互操作


    Java与ElasticSearch的交互操作

    节点客户端(Node client)

    节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。

    传输客户端(Transport client)

    轻量级的传输客户端可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上。

    本文使用Jest工具,Jest是一种Restful的传输客户端,通过9300端口和ElasticSearch通信,可以动态添加和删除节点。

    注意:客户端必须具有与集群中的节点相同的主版本号(例如2.x或5.x)。 客户端可以连接到具有不同小版本(例如2.3.x)的群集,但是可能不支持新的功能。 理想情况下,客户端应具有与群集相同的版本。

    使用JestClientFactory工厂类初始化JestClient实例

       /**
         * 初始化JestClient实例
         */
        private static JestClient initClient(String server) {
            JestClientFactory factory = new JestClientFactory();
            //可以批量创建使用,分隔的ElasticSearch客户端
            List<String> esServerList = Arrays.asList(server.split(","));
    
            HttpClientConfig clientConfig = new HttpClientConfig.Builder(esServerList)
                .multiThreaded(true)
                .readTimeout( 30 * 1000)
    			.defaultCredentials("admin","xiaoadmin")
                .maxTotalConnection(5)
               //.discoveryEnabled(true)// 启用自动发现 Enabling node discovery will (poll) and update the list of servers in the client periodically.
               //.discoveryFrequency(5L, TimeUnit.HOURS)// 5秒轮询一次
                .build();
        //创建客户对象
        factory.setHttpClientConfig(clientConfig);
        return factory.getObject();
    }
    

    对应的配置文件示例

    #Elasticsearch
    #Elasticsearch服务器地址
    demo.index.server=http://es-test-head.demo.com
    #索引分片数
    demo.index.shards=5
    #复制分片数
    demo.index.replicas=1
    #索引和类型名称
    demo.index.name=demo-index
    demo.index.type=demo-type
    

    初始化ES客户端后,可以获取对应的客户端对象进行操作

    /**
     *创建JestClient实例
     */
    public static JestClient getJestClient(String server) {
        JestClient jestClient = jestClientMap.get(server);
        if (jestClient == null) {
            jestClient = initClient(server);
            jestClientMap.put(server, jestClient);
        }
        return jestClient;
    }
    

    参考文档:
    与ElasticSearch的交互
    Elasticsearch 2.3.3 JAVA api说明文档
    searchbox-io/Jest GitHub

  • 相关阅读:
    Android 动画
    Eclipse设置软tab(用4个空格字符代替)及默认utf-8文件编码(unix)
    android ANR
    Android 服务端开发之开发环境配置
    安装Android sdk 4.4(19)出现问题的解决方案
    adb uninstall/pull/push 命令的使用总结
    Android学习笔记1 android adb启动失败问题 adb server is out of date. killing...
    Android.mk文件语法规范 原文
    Android MediaProvider数据库模式
    Android MVC模式
  • 原文地址:https://www.cnblogs.com/Simon-cat/p/9993659.html
Copyright © 2020-2023  润新知