Elastic 开发记录 二、索引结构创建及数据插入

这篇博客介绍了通过ElasticSearch API客户端进行索引结构创建和数据插入的方法。首先,文章提及了三种常见的操作ES方式,包括直接使用REST接口、API客户端以及集成API接口,并对比了它们的优缺点。接着,作者重点讲述了使用API客户端的便捷性和灵活性,并提供了创建索引结构Mapping和添加索引数据的相关代码示例。
摘要由CSDN通过智能技术生成


最近手上的一个项目用到了ES相关的东西,研究了一下,简单敲了点可用的代码,在这里记录一下。

平台环境

ES和Kibana均采用的6.4.2的版本,Java API Client版本采用的和集群相同的版本

一些简单的说明

就目前来说,主要常用的操作ES方式有三种

  1. 最原始也是普适性最好的方式,通过ES的Rest接口进行访问,这种方式的缺点就是需要开发者自己从接口地址以及接口传参等方面来区分要具体进行的操作,对ESrest接口不熟悉的话,开发起来比较困难,但是优点就是普适性极强,并且支持全部ES可以实现的操作,最为灵活。
  2. 使用ES的API Client,这种方式就类似于JDBC,相对rest接口来说,要执行的操作更为明确,但是同样的,对API中方法不熟悉的话,一样开发起来会遇到各种问题。总的来说,优点是操作更加明确清晰,不用自己来区分一系列接口,统一使用client及其衍生相关对象操作即可,同样可以实现绝大部分的可行操作,较为灵活
  3. 集成的API接口,最常见的就是spring data相关的ES操作方法,优点是便于配置使用,自己无需管理client,并且封装了大量的方法,缺点是要实现提供方法之外的功能时,修改实现比较麻烦,另外在使用的时候接口对数据格式有一定的要求

在这里先简单记录一下第二种方式,通过API Client操作ES,这种方式相对于第一种要更加简单,对于第三种要更加灵活。

相关代码

创建索引结构Mapping

	/**
     * 创建新的ES索引\n
     *  该方法的作用是根据传入的结构,创建索引结构(Mapping),不涉及插入数据
     * @param indexName
     * @param type
     * @param fields
     * @return
     */
    public boolean createIndex(String indexName, String type, List<ElasticField> fields) throws IOException {
   
        if (checkIndex(indexName)) {
   
            LOG.warn(" index " + indexName + " already exsit");
            return false;
        }
        CreateIndexRequestBuilder cib = client.admin().indices().prepareCreate(indexName);
        XContentBuilder mapping = null;
        try {
   
        	//设置只定义字段,不传参
            XContentBuilder properties = XContentFactory.jsonBuilder()
                    .startObject()//表示开始设置值
                    .startObject("properties");
            setFields(fields, properties);
            mapping = properties.endObject
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值