开发者学堂课程【ElasticSearch 最新快速入门教程:Json 方式】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/642/detail/10636
Json 方式
新版本的 log4j2要求书写定制日志在控制台的格式,换成 xml 的格式就可以。能够正常获得 transport client 的实例,环境已经搭建完毕,下面介绍如何用 Json 方式创建一个索引。
先把上面这个 log4j2删掉。
/**
*测试新增引信息
*/
@Test
public void testNewAdd(){
//需求:
向索引库 bigdata 中 type 之 product 中新增一条 document,该 document 的信息如下:
("name": "storm"."author": "Apache storm team", "version": "2.3.5"}
//使用 Fastson 将实例转换成 json 格式的数据
Product product= new Product("storm", "Apache storm team","2.3.5"):
string jsonstr =JSON. toJSONString(product):
IndexResponse response =client. prepareIndex("bigdata", "product")
. setsource(, XContentType. JSON)
. get();
loggerinfo(待新增的 document 的信息是:+ jsonstr+,新增操作后,获得了来自远程 es 集群反馈的信息是:"+response)
需要找到 transport client 的核心API 叫做prepareindex,需要准备索引库以及type库,setsource 第一个参数指的是一个阶层格式的数据,一般是阶层对象数据的格式,然后尝试制定这个数据的类型,返回结果,带新增的 document的信息和新增操作后,获得了来自远程 es 集群反馈的信息。
至于这个 API 就是把一个实例变成了一个阶层对象格式的数据,使用 fast Json 阶层。
把二里巴巴 fastJson 的阶层导进来,找到 pom 依赖文件,然后 fast 阶层,选择一个比较新的版本,导进来。
首先看一下 head 插件有一个 bigdata,这里的 big data 指的是索引库,下面可以看一下它的一些信息,索引下面的bigdate,索引库下面有一个类型叫做 product,有 name,authorities, last_ version 三个属性。
先增加一天索引信息,一个 type 对应一个类,建立一个包叫做 entity,建立一个实体类的名称叫做 product,这个是product 的实体类,选择一些与 type一一对应的属性,有 name,authorities, last_ version 三个属性,分别是名字,然后让它自动生成。
代码:
package com.qf.entity;
/**
*Description: Product 实体类
*Copyright(c), 2018, Jansonxu
* This program is protected by copyright laws.
*Date:2019年05月12日
*@ Qauthor 徐文波
*@ aversion:1.0
*/
@Data
@NoArgsGonstructor
@AllArgsConstructor
public class Product{
/**
*名字
*/
private String name;
/**
*作者
*/
private String author;
/**
*
版本号
*/
private String version;
引入一个新的框架 lombok,生成一个新的注解框架,作用在类体上,通过一些注解来生成 getter/setter 访问器,以及构造方法,把这个也导进来,刷新一下。
导进来之后就可以用,首先导进来这个 Date 注解,框架之前还需要安装一个插件,安装之后重启就可以生效。
搜索一下 lombok,安装一下,之后就会显示,之后要启用 annotation,然后 enable a nnotation processing,试用之后才会生效。
之后有一个 noArgsconstructor noArgsconstructo,还有一个 AllArjs constructor 的构建方法。
还有一个 string 的方法,我们需要定制一下,可以用默认方法,使用 Json 的方式新增一条索引信息,首先找到一个client 的方法 prepareindex,所以哭的名字可以作为常量来书写。
*正式测试的方法
*/
@Test
public void testEnv
()
System. out
.
printin(
"
正式开始测试…
");
System. out
.
printin(TransportClient 的实例是:"+client)
;
}
/**
*
使用 JSON 的方式新增素引
*/
@
Test
public void testNewAddIndexJsonWay(
){
System. outprintin(
"
正式开始使用【使用 JsoN 的方式新增索引】了哦…
");
IndexResponse response client. prepareIndex(INDEX, TYPE, id").setSourca(sanstr, XContentType.JSOM).get();
System. out printf(待新增的索引信息是:%s,es集群反馈的结果是:%s%jsonStrresponse.toString());
/
索引库里面有一个 type 叫做 product,制定1为索引的标志,Setsource 有一个字符串的操作,可以是 json 的数据,然后 get 触发执行,准备 json 数据,参数首先是 name,比如说是 hadoop,作者 比如说是施瓦辛格,原本是3.1 .2,然后打印,Printf 定制输出的格式。
试验一下,如果正确的话,并是一个✔的形状,正式开始操作之后是后处理的顺序,右边是反馈的结果 效果是successful,刷新一下,The version3.1.2实际上也是加进去的。