java用es客户端创建索引

这篇具有很好参考价值的文章主要介绍了java用es客户端创建索引。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先用java创建esClient

package com.ws.es.config;
import com.ws.util.PropertiesUtil;
import org.apache.http.Header;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.message.BasicHeader;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.elasticsearch.client.Node;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;

import java.util.ArrayList;
import java.util.List;

public class ElasticSearchConfig {

    private static final Logger LOGGER = LogManager.getLogger(ElasticSearchConfig.class);

    /**
     * elk集群地址
     */
    private static String esServerHost = PropertiesUtil.getProperty("es.ServerHost");

    private static Integer connectTimeout = Integer.parseInt(PropertiesUtil.getProperty("es.connectTimeout"));

    private static Integer socketTimeout = Integer.parseInt(PropertiesUtil.getProperty("es.socketTimeout"));

    private static Integer connectionRequestTimeout = Integer
            .parseInt(PropertiesUtil.getProperty("es.connectionRequestTimeout"));

    private static Integer maxConnPerRoute = Integer.parseInt(PropertiesUtil.getProperty("es.maxConnPerRoute"));

    private static Integer maxConnTotal = Integer.parseInt(PropertiesUtil.getProperty("es.maxConnTotal"));

    private static boolean isSecureMode = Boolean.parseBoolean(PropertiesUtil.getProperty("es.isSecureMode"));

    /**
     * Bean name default 函数名字
     *
     * @return
     */
    public static RestClient restClient() {
        LOGGER.info("Elasticsearch初始化开始。。。。。");
        RestClientBuilder restClientBuilder = getRestClientBuilder();
        RestClient restClient = restClientBuilder.build();
        setNodes(restClient);
        LOGGER.info("The Low Level Rest Client has been created.");
        return restClient;
    }

    private static RestClientBuilder getRestClientBuilder() {
        HttpHost[] hostArray = getHostArray();
        if (!isSecureMode) {
            System.setProperty("es.security.indication", "false");
        } else {
            setSecConfig();
        }

        RestClientBuilder builder = RestClient.builder(hostArray);
        Header[] defaultHeaders = new Header[] { new BasicHeader("Accept", "application/json"),
                new BasicHeader("Content-type", "application/json") };
        builder.setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
            @Override
            public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
                return requestConfigBuilder.setConnectTimeout(connectTimeout).setSocketTimeout(socketTimeout)
                        .setConnectionRequestTimeout(connectionRequestTimeout);
            }
        }).setMaxConnPerRoute(maxConnPerRoute).setMaxConnTotal(maxConnTotal);
        builder.setDefaultHeaders(defaultHeaders);
        return builder;
    }

    private static void setNodes(RestClient restClient) {
        List<Node> nodes = new ArrayList();
        HttpHost[] var3 = getHostArray();
        int var4 = var3.length;

        for (int var5 = 0; var5 < var4; ++var5) {
            HttpHost httpHost = var3[var5];
            nodes.add(new Node(httpHost));
        }
        restClient.setNodes(nodes);
    }

    private static HttpHost[] getHostArray() {
        String schema;
        if (!isSecureMode) {
            schema = "http";
        } else {
            schema = "https";
        }
        List<HttpHost> hosts = new ArrayList();
        String[] hostArray1 = esServerHost.split(",");
        String[] var4 = hostArray1;
        int var5 = hostArray1.length;

        for (int var6 = 0; var6 < var5; ++var6) {
            String host = var4[var6];
            String[] ipPort = host.split(":");
            HttpHost hostNew = new HttpHost(ipPort[0], Integer.parseInt(ipPort[1]), schema);
            hosts.add(hostNew);
        }

        return (HttpHost[]) hosts.toArray(new HttpHost[0]);
    }

    private static void setSecConfig() {
        try {
            System.setProperty("elasticsearch.kerberos.jaas.appname", "EsClient");
            System.setProperty("es.security.indication", "true");
        } catch (Exception var2) {
        }

    }
}

创建es索引模板

 public static void cateteTemplateNonMotor(RestClient restClient) {
        Map<String, String> params = Collections.singletonMap("pretty", "true");
        JSONObject json = new JSONObject();
        JSONObject settings = new JSONObject();
        json.put("template", "索引的模板前缀加*号例123*");
        settings.put("number_of_shards", "" + 分片数例2 + "");
        settings.put("number_of_replicas", "" + 副本数例1 + "");
        settings.put("max_result_window", "100000000");
        json.put("settings", settings);
        JSONObject mappings = new JSONObject();
        JSONObject clgjxx = new JSONObject();
        JSONObject properties = new JSONObject();
        properties.put("1", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        properties.put("2", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        properties.put("3", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        properties.put("4", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        properties.put("5", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        properties.put("6", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        properties.put("7", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        properties.put("8", JSONObject.parse("{\"type\":\"keyword\"}"));//
        properties.put("9", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        properties.put("10", JSONObject.parse("{\"type\":\"date\",\"format\":\"yyyyMMddHHmmss\"}"));// 经过时刻
        properties.put("11", JSONObject.parse("{\"type\":\"date\",\"format\":\"yyyyMMddHHmmss\"}"));// 入库时间
        properties.put("12", JSONObject.parse("{\"type\":\"keyword\"}"));// 
        clgjxx.put("properties", properties);
        mappings.put("doc", xxxx);
        json.put("mappings", mappings);
        String jsonString = json.toString();
        System.out.println(jsonString);
        HttpEntity entity = new NStringEntity(jsonString, ContentType.APPLICATION_JSON);
        Response response = null;
        try {
            response = restClient.performRequest("PUT", "/_template/123_temp", params, entity);
            System.out.println(
                    "createIndexWithShardNum,response entity is : " + EntityUtils.toString(response.getEntity()));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

新建索引

   public static void add(RestClient restClient, String jsonString) {
        Map<String, String> params = Collections.singletonMap("pretty", "true");
        HttpEntity entity = new NStringEntity(jsonString, ContentType.APPLICATION_JSON);
        Response response = null;
        try {

            response = restClient.performRequest("PUT", "/123_202303", params, entity);
            if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()
                    || HttpStatus.SC_CREATED == response.getStatusLine().getStatusCode()) {
                // LOG.info("putData,response entity is : " +
                // EntityUtils.toString(response.getEntity()));
                System.out.println(新建ES索引成功!");
            } else {
                System.out.println("新建ES索引失败!");
                // Assert.fail();
            }
        } catch (Exception e) {
            e.printStackTrace();
            // Assert.fail();
        }
    }

}

批量插入数据

1.先批量生成数据
JSONObject message = new JSONObject();
            message.put("1", json.get("1"));// 
            //message.put("2", 2);// 
            message.put("3", sf1.format(now));// 入库时间
            //message.put("4", json.get("4"));// 触发时间
            message.put("5", json.get("5"));// 
            message.put("6", json.get("6"));
            //message.put("7", json.get("7"));
            
 JSONObject title = JSONObject.parseObject(
                    "{\"create\":{\"_index\":\"" + index + "\",\"_type\":\"doc\",\"_id\":\"" + rowkey + "\"}}");

            if (message.size() > 0) {
                sb.append(title.toJSONString()).append("\n");
                sb.append(message.toJSONString()).append("\n");
            }
            EsRestUtils.add(restClient, sb.toString());
2批量导入方法
 public static void add(RestClient restClient, String jsonString) {
        Map<String, String> params = Collections.singletonMap("pretty", "true");
        HttpEntity entity = new NStringEntity(jsonString, ContentType.APPLICATION_JSON);
        Response response = null;
        try {

            response = restClient.performRequest("POST", "/doc/_bulk", params, entity);
            if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()
                    || HttpStatus.SC_CREATED == response.getStatusLine().getStatusCode()) {
                // LOG.info("putData,response entity is : " +
                // EntityUtils.toString(response.getEntity()));
            } else {
                System.out.println("插入ES失败!");
                // Assert.fail();
            }
        } catch (Exception e) {
            e.printStackTrace();
            // Assert.fail();
        }
    }

文章来源地址https://www.toymoban.com/news/detail-503649.html

到了这里,关于java用es客户端创建索引的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch:在 Java 客户端应用中管理索引 - Elastic Stack 8.x

    管理索引是客户端应用常用的一些动作,比如我们创建,删除,打开 及关闭索引等操作。在今天的文章中,我将描述如何在 Java 客户端应用中对索引进行管理。 我们需要阅读之前的文章 “Elasticsearch:在 Java 客户端中使用 truststore 来创建 HTTPS 连接”。在那篇文章中,我们详

    2023年04月09日
    浏览(29)
  • Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据

    🎉工作中遇到这样一个需求场景:由于ES数据库中历史数据过多,占用太多的磁盘空间,需要定期地进行清理,在一定程度上可以释放磁盘空间,减轻磁盘空间压力。 🎈在经过调研之后发现,某服务项目每周产生的数据量已经达到千万级别,单日将近能产生 两百万 的数据量

    2024年02月11日
    浏览(31)
  • 【Elasticsearch学习笔记五】es常用的JAVA API、es整合SpringBoot项目中使用、利用JAVA代码操作es、RestHighLevelClient客户端对象

    目录 一、Maven项目集成Easticsearch 1)客户端对象 2)索引操作 3)文档操作 4)高级查询 二、springboot项目集成Spring Data操作Elasticsearch 1)pom文件 2)yaml 3)数据实体类 4)配置类 5)Dao数据访问对象 6)索引操作 7)文档操作 8)文档搜索 三、springboot项目集成bboss操作elasticsearch

    2023年04月09日
    浏览(38)
  • 【ElasticSearch】基于 Java 客户端 RestClient 实现对 ElasticSearch 索引库、文档的增删改查操作,以及文档的批量导入

    ElasticSearch 官方提供了各种不同语言的客户端,用来操作 ES。这些客户端的本质就是组装 DSL 语句,通过 HTTP 请求发送给 ES 服务器。 官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html。 在本文中,我们将着重介绍 ElasticSearch Java 客户端中的 RestClient,并演示如何

    2024年02月08日
    浏览(39)
  • 【已解决】Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据

    🎉工作中遇到这样一个需求场景:由于ES数据库中历史数据过多,占用太多的磁盘空间,需要定期地进行清理,在一定程度上可以释放磁盘空间,减轻磁盘空间压力。 🎈在经过调研之后发现,某服务项目每周产生的数据量已经达到千万级别,单日将近能产生 两百万 的数据量

    2024年02月14日
    浏览(35)
  • es相关的官方客户端与spring客户端对比与介绍

    es提供的 TransportClient 传统的客户端,基于TCP传输协议与Elasticsearch通信。 已经被弃用,不推荐使用。 适用于Elasticsearch 5.x及以前的版本 因为Elasticsearch 6.x及以上版本已不再支持TCP Transport协议,TransportClient无法连接Elasticsearch集群。 RestHighLevelClient 是一个高级的REST客户端,主要用于与

    2024年02月02日
    浏览(43)
  • Scala连接ES客户端

    大家好,我是楚生辉,在未来的日子里我们一起来学习大数据相关的技术,一起努力奋斗,遇见更好的自己! 本文详细的介绍了如何使用Scala语言连接上Elasticsearch客户端,有需要的小伙伴可以自行获取与学习~ 使用方法 写入ES中,就要规划,是写入到一个索引中,还是分割索

    2024年01月21日
    浏览(37)
  • ES客户端RestHighLevelClient的使用

    默认情况下,ElasticSearch使用两个端口来监听外部TCP流量。 9200端口:用于所有通过HTTP协议进行的API调用。包括搜索、聚合、监控、以及其他任何使用HTTP协议的请求。所有的客户端库都会使用该端口与ElasticSearch进行交互。 9300端口:是一个自定义的二进制协议,用于集群中各

    2024年02月03日
    浏览(31)
  • ES查询客户端初始化(RestHighLevelClient)

    另外,如果说把es当成一个数据库使用,可以看下开源项目easy-es,操作更方便。文档地址:快速开始 | Easy-Es

    2024年02月11日
    浏览(35)
  • 袁庭新ES系列15节|Elasticsearch客户端基础操作

    上一章节我们介绍了搭建Elasticsearch集群相关的知识。那么又该如何来操作Elasticsearch集群呢?在ES官网中提供了各种语言的客户端,我们在项目开发过程中有多种Elasticsearch版本和连接客户端可以选择,那么他们有什么区别?这一章节袁老师带领大家来学习Elasticsearch客户端相关

    2024年04月25日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包