ElasticSearch Java API官网文档:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-docs-index.html

一、生成JSON


创建索引的第一步是要把对象转换为JSON字符串.官网给出了四种创建JSON文档的方法:

1.1手写方式生成

String json = "{" +"\"user\":\"kimchy\"," +"\"postDate\":\"2013-01-30\"," +"\"message\":\"trying out Elasticsearch\"" +"}";

手写方式很简单,但是要注意日期格式:Date Formate

1.2使用集合

集合是key:value数据类型,可以代表json结构.

Map<String, Object> json = new HashMap<String, Object>();
json.put("user","kimchy");
json.put("postDate",new Date());
json.put("message","trying out Elasticsearch");

1.3使用JACKSON序列化

ElasticSearch已经使用了jackson,可以直接使用它把javabean转为json.

// instance a json mapper
ObjectMapper mapper = new ObjectMapper(); // create once, reuse// generate json
byte[] json = mapper.writeValueAsBytes(yourbeaninstance);

1.4使用ElasticSearch 帮助类

import static org.elasticsearch.common.xcontent.XContentFactory.*;XContentBuilder builder = jsonBuilder().startObject().field("user", "kimchy").field("postDate", new Date()).field("message", "trying out Elasticsearch").endObject()String json = builder.string();

二、创建索引


下面的例子把json文档写入所以,索引库名为twitter、类型为tweet,id为1:

import static org.elasticsearch.common.xcontent.XContentFactory.*;IndexResponse response = client.prepareIndex("twitter", "tweet", "1").setSource(jsonBuilder().startObject().field("user", "kimchy").field("postDate", new Date()).field("message", "trying out Elasticsearch").endObject()).get();

也可以直接传人JSON字符串:

String json = "{" +"\"user\":\"kimchy\"," +"\"postDate\":\"2013-01-30\"," +"\"message\":\"trying out Elasticsearch\"" +"}";IndexResponse response = client.prepareIndex("twitter", "tweet").setSource(json).get();

更简单的可以直接System.out.println(response)查看返回信息.

三、java实现


新建一个Java项目,导入elasticsearch-2.3.3/lib目录下的jar文件.新建一个Blog类:

public class Blog {private Integer id;private String title;private String posttime;private String content;public Blog() {}public Blog(Integer id, String title, String posttime, String content) {this.id = id;this.title = title;this.posttime = posttime;this.content = content;}//setter and getter
}

创建java实体类转json工具类:

import java.io.IOException;import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;public class JsonUtil {// Java实体对象转json对象public static String model2Json(Blog blog) {String jsonData = null;try {XContentBuilder jsonBuild = XContentFactory.jsonBuilder();jsonBuild.startObject().field("id", blog.getId()).field("title", blog.getTitle()).field("posttime", blog.getPosttime()).field("content",blog.getContent()).endObject();jsonData = jsonBuild.string();//System.out.println(jsonData);} catch (IOException e) {e.printStackTrace();}return jsonData;}}

添加数据,返回一个list:

import java.util.ArrayList;
import java.util.Date;
import java.util.List;public class DataFactory {public static DataFactory dataFactory = new DataFactory();private DataFactory() {}public DataFactory getInstance() {return dataFactory;}public static List<String> getInitJsonData() {List<String> list = new ArrayList<String>();String data1 = JsonUtil.model2Json(new Blog(1, "git简介", "2016-06-19", "SVN与Git最主要的区别..."));String data2 = JsonUtil.model2Json(new Blog(2, "Java中泛型的介绍与简单使用", "2016-06-19", "学习目标 掌握泛型的产生意义..."));String data3 = JsonUtil.model2Json(new Blog(3, "SQL基本操作", "2016-06-19", "基本操作:CRUD ..."));String data4 = JsonUtil.model2Json(new Blog(4, "Hibernate框架基础", "2016-06-19", "Hibernate框架基础..."));String data5 = JsonUtil.model2Json(new Blog(5, "Shell基本知识", "2016-06-19", "Shell是什么..."));list.add(data1);list.add(data2);list.add(data3);list.add(data4);list.add(data5);return list;}}

创建索引、添加数据:

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.List;import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;import cn.com.bropen.entity.DataFactory;
import static org.elasticsearch.common.xcontent.XContentFactory.*;public class ElasticSearchHandler {public static void main(String[] args) {try {/* 创建客户端 */// client startupClient client = TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));List<String> jsonData = DataFactory.getInitJsonData();for (int i = 0; i < jsonData.size(); i++) {IndexResponse response = client.prepareIndex("blog", "article").setSource(jsonData.get(i)).get();if (response.isCreated()) {System.out.println("创建成功!");}}client.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
  • 40

查看插入的数据:

ElasticSearch Java Api(一) -创建索引相关推荐

  1. ElasticSearch Java Api(四) -删除索引

    删除可以是删除整个索引库,也可以根据文档id删除索引库下的文档,还可以通过query查询条件删除所有符合条件的数据. 一.删除整个索引库 下面的例子会删除indexName索引: DeleteInde ...

  2. ElasticSearch Java Api(二) -检索索引库

    一.准备数据 String data1 = JsonUtil.model2Json(new Blog(1, "git简介", "2016-06-19", &qu ...

  3. Elasticsearch Java API 6.2(java client)

    前言 本节描述了Elasticsearch提供的Java API,所有的Elasticsearch操作都使用客户端对象执行,所有操作本质上都是完全异步的(要么接收监听器,要么未来返回). 此外,客户端 ...

  4. Elasticsearch RestHighLevelClient 已标记为被弃用 它的替代方案 Elasticsearch Java API Client 的基础教程及迁移方案

    在Elasticsearch7.15版本之后,Elasticsearch官方将它的高级客户端RestHighLevelClient标记为弃用状态.同时推出了全新的Java API客户端Elastics ...

  5. SpringBoot整合最新Elasticsearch Java API Client 7.16教程

    文章目录 前言 一.Elasticsearch和Kibana 7.16版本安装 二.pom.xml文件引入依赖 三.代码实例 总结 前言 最新在学习SpringBoot整合es的一些知识,浏览了网上的 ...

  6. Elasticsearch Java API 分组、聚合、嵌套相关查询

    Elasticsearch Java API 分组.聚合.嵌套相关查询 翼支付监控系统正使用es做后端存储,这边我们是将日志计算处理过后的数据通过kafka储存到es.选择用es作为数据储存端是考虑到 ...

  7. Elasticsearch8.0版本中Elasticsearch Java API Client客户端的基本使用方法

    关于Elasticsearch Java API Client客户端如何连接以及如何对索引和文档进行基本的增删改查操作请查看我的上一篇博文:Elasticsearch RestHighLevelCli ...

  8. Elasticsearch Java API 很全的整理以及架构剖析

    Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...

  9. Elasticsearch Java API四种实现方式

    0.题记 之前Elasticsearch的应用比较多,但大多集中在关系型.非关系型数据库与Elasticsearch之间的同步.以上内容完成了Elasticsearch所需要的基础数据量的供给.但想要 ...

最新文章

  1. parted如何将磁盘所有空间格式化_linux下大于2T的硬盘格式化问题
  2. tomcat,eclipse,sts绿色运行
  3. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图
  4. ❤️万字总结八大排序:冒泡排序,选择排序,插入排序,堆排序,希尔排序,归并排序,计数排序❤️
  5. redis数据结构、持久化、缓存淘汰策略
  6. 1-概述程序构成基本元素
  7. 对string类型字符串操作
  8. vsftp虚拟帐户配置
  9. 华为OSPF多区域+路由重发布/路由引入
  10. 十、Shell脚本编程
  11. 微信小程序Axure元件库(2021最新版)
  12. 财务女,30岁无情被辞:想给财务提个醒!!
  13. CAD无法打印的问题解决办法
  14. Android中ail的作用和使用说明
  15. 2 月份看了 17 本书,我只推荐这 8 本!
  16. PowerBI报表页权限控制
  17. 你为什么要写博客?—— 优秀博主必读
  18. android 手机 优化,安卓手机超级优化技巧,流畅度飙升50%
  19. (原)让win8开机自动进行宽带连接
  20. 英文文献阅读器Paper Digest使用指南

热门文章

  1. 为什么TCP连接至少3次握手
  2. 使用Harbor构建docker私有仓库
  3. 史上最全的Linux常用命令汇总①收藏这一篇就够了!(超全,超详细)
  4. BGP小实验(一)——小实验练练手走起来
  5. 等级考试文件服务器,内核级 Samba 文件共享服务器 CIFSD 正式开始测试
  6. clickhouse原理解析与应用实践_Hybrid App (混合应用) 技术全解析 方案原理篇
  7. Win7 路由上网DNS服务器ping不通的解决方法
  8. 多版本php共存 linux,linux下多版本php共存的原理、方法
  9. nginx 正则 结尾 配置_nginx location 配置阐述优先级别使用说明-不当可能存在安全隐患...
  10. while0表示什么意思_轮胎上的各种字符都表示什么意思,家用车的轮胎又该如何选择呢?...