栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

JAVA API调用elasticsearch实现基本增删改查,字节跳动架构师面试

JAVA API调用elasticsearch实现基本增删改查,字节跳动架构师面试

@Test

public void addIndex2() {

String jsonStr = “{” +

" " userName " : " 张三 " ," +

" " sendDate " : " 2017-11-30 " ," +

" " msg " : " 你好李四 " " +

"}" ;

IndexResponse response = client .prepareIndex( “weixin” , “tweet” ).setSource(jsonStr, XContentType. JSON ).get();

System. out .println( “json索引名称:” + response.getIndex() + " n json类型:" + response.getType()

+ " n json文档ID:" + response.getId() + " n 当前实例json状态:" + response.status());

}

@Test

public void addIndex3() {

Map map = new HashMap();

map.put( “name” , “小妹” );

map.put( “age” , 18 );

map.put( “sex” , “女” );

map.put( “address” , “广东省广州市天河区上社” );

map.put( “phone” , “15521202233” );

map.put( “height” , “175” );

map.put( “weight” , “60” );

IndexResponse response = client .prepareIndex( “species” , “person” ).setSource(map).get();

System. out .println( “map索引名称:” + response.getIndex() + " n map类型:" + response.getType()

+ " n map文档ID:" + response.getId() + " n 当前实例map状态:" + response.status());

}

@Test

public void addIndex4() {

JsonObject jsonObject = new JsonObject();

jsonObject.addProperty( “userName” , “张三” );

jsonObject.addProperty( “sendDate” , “2017-11-23” );

jsonObject.addProperty( “msg” , “你好李四” );

IndexResponse response = client .prepareIndex( “qq” , “tweet” ).setSource(jsonObject, XContentType. JSON ).get();

System. out .println( “jsonObject索引名称:” + response.getIndex() + " n jsonObject类型:" + response.getType()

+ " n jsonObject文档ID:" + response.getId() + " n 当前实例jsonObject状态:" + response.status());

}

我们可以创建Json、Map、JsonObject、自定义字段等,创建好之后可以去ES系统中查看是否添加成功。如果不进行分片设置每次创建默认有五个分片数量,具体情况如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-svKJHzRt-1637513892317)(https://note.youdao.com/yws/api/group/76450073/noteresource/F768F1A9D5464B67A1831364B3B44251/version/15?method=get-resource&shareToken=AF9F4161E424410EB73CD253D62819AF&entryId=196967564)]

2.创建好之后,我们可以通过ES提供的API进行相应的查询操作,具体代码如下所示:

@Test

public void query() {

GetResponse getResponse = client .prepareGet( “species” , “person” , “AWNtYjiVjqSYg4HhYcQZ” ).get();

System. out .println( “索引库的数据:” + getResponse.getSourceAsString());

}

查询的结果如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OyiHUIpU-1637513892357)(https://note.youdao.com/yws/api/group/76450073/noteresource/ECF9AD3AB04F4097B4D7DBCB8245FAA3/version/16?method=get-resource&shareToken=AF9F4161E424410EB73CD253D62819AF&entryId=196967564)]

ES上面对应索引的数据如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jl6RwUbl-1637513892358)(https://note.youdao.com/yws/api/group/76450073/noteresource/FB6940DBB1E1403694CFDA2D7E80826D/version/17?method=get-resource&shareToken=AF9F4161E424410EB73CD253D62819AF&entryId=196967564)]

3.下面我们将上面查询到的id(AWNtYjiVjqSYg4HhYcQZ)进行相应的修改,修改索引的API操作如下代码所示:

@Test

public void updateData() {

Map map = new HashMap();

map.put( “name” , “大妹” );

map.put( “age” , 20 );

map.put( “sex” , “女” );

map.put( “address” , “广东省广州市天河区上社” );

map.put( “phone” , “15521202233” );

map.put( “height” , “180” );

map.put( “weight” , “70” );

UpdateResponse updateResponse = client .prepareUpdate( “species” , “person” , “AWNtYjiVjqSYg4HhYcQZ” )

.setDoc(map).get();

System. out .println( “updateResponse索引名称:” + updateResponse.getIndex() + " n updateResponse类型:" + updateResponse.getType()

+ " n updateResponse文档ID:" + updateResponse.getId() + " n 当前实例updateResponse状态:" + updateResponse.status());

}

我们在重新查询一下id为: AWNtYjiVjqSYg4HhYcQZ 的索引文档,看一下数据是否已经修改。结果如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tvzvLqjg-1637513892360)(https://note.youdao.com/yws/api/group/76450073/noteresource/817C6F1B8CD64D4BB2096DDE0EE82EAB/version/18?method=get-resource&shareToken=AF9F4161E424410EB73CD253D62819AF&entryId=196967564)]

我们从上面的截图可以看出数据确实已经修改完毕了,证明修改的API操作是成功的。

4.最后我们看一下最后的删除索引操作,具体的代码如下所示:

@Test

public void deleteData() {

DeleteResponse deleteResponse = client .prepareDelete( “species” , “person” , “AWNtYjiVjqSYg4HhYcQZ” ).get();

System. out .println( “deleteResponse索引名称:” + deleteResponse.getIndex() + " n deleteResponse类型:" + deleteResponse.getType()

+ " n deleteResponse文档ID:" + deleteResponse.getId() + " n 当前实例deleteResponse状态:" + deleteResponse.status());

}

下面我们重新执行一下查询id为: AWNtYjiVjqSYg4HhYcQZ 看看是否还可以查询到对应的数据。结果如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9DleigRP-1637513892361)(https://note.youdao.com/yws/api/group/76450073/noteresource/3EFDACF3B37547D99D703D4FA95DB3CA/version/19?method=get-resource&shareToken=AF9F4161E424410EB73CD253D62819AF&entryId=196967564)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y0CBvp6V-1637513892363)(https://note.youdao.com/yws/api/group/76450073/noteresource/1D210BDBB85E4623A802A28BBDC9B419/version/20?method=get-resource&shareToken=AF9F4161E424410EB73CD253D62819AF&entryId=196967564)]

可以看到不管是查询结果还是ES数据都没有那条对应的数据了,这证明我们删除的API操作是成功的。

大家可能会有疑问,问什么都没有看到连接ES系统的代码,因为我这边代码是写在Test测试用例中,所以每一个操作都需要连接到ES系统这个操作。所以这边我抽象出来变成父类,具体代码如下所示:

public class ESTest {

public final static String HOST = “192.168.11.24” ;

public TransportClient client = null ;

public final static int PORT = 9300 ;

public final static String HOST = “192.168.11.24” ;

public TransportClient client = null ;

public final static int PORT = 9300 ;

/**

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/602453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号