Java连接Elasticsearch6.xxx CRUD篇二
首先我们对上一篇的代码进行优化、创建客户端连接工具
import java.net.InetAddress;
import java.net.UnknownHostException;import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;/**** ES 根据ID检索文档测试* @author yandongfa* @Date 2020年4月17日 下午6:59:13* @version V1.0*/
public class ESTools {public static final String HOST = "127.0.0.1"; //ES集群服务器IP地址public static final Integer PORT = 9300; //集群结点之间通信端口public static final String CONF = "cluster.name"; //配置集群(默认配置、无需修改)public static final String NAME = "xxxxxxxx"; //集群名称(默认是elasticsearch) /*** 获取ElasticSearch集群客户端* @return* @throws UnknownHostException*/@SuppressWarnings("resource")public static TransportClient getTransportClient() throws UnknownHostException {Settings settings = Settings.builder().put(CONF, NAME).build();return new PreBuiltTransportClient(settings).addTransportAddress(new TransportAddress(InetAddress.getByName(HOST),PORT));}}
1、根据ID检索文档
import java.net.UnknownHostException;import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.junit.Test;public class EsDemo {/**** 根据ID检索文档测试* @throws UnknownHostException*/@Testpublic void test1() throws UnknownHostException{//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、数据查询、book:索引名称、doc:类型名称、1:根据id=1查询GetResponse response = client.prepareGet("book", "doc", "1").execute().actionGet();//3、得到查询出的数据、返回JSON字符串System.out.println(response.getSourceAsString());//4、关闭客户端client.close();}}
2、添加文档
/**** 添加文档* @throws Exception*/@Testpublic void test2() throws Exception {//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、创建文档对象XContentBuilder docment = XContentFactory.jsonBuilder().startObject().field("description", "零基础开发实战课程").field("name", "spring开发").field("studymodel", 2019).endObject();//3、添加文档IndexResponse response = client.prepareIndex("book", "doc", "2").setSource(docment).get();System.out.println(response);//关闭客户端client.close();}
/**** 添加文档方式二* @throws Exception*/@Testpublic void test11() throws Exception {//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、构建JSON数据Map<String, Object> jsonMap = new HashMap<>();jsonMap.put("name", "spring cloud实战");jsonMap.put("description", "本课程主要从四个章节进行讲解: 1.微服务架构入门 2.spring cloud基础入门 3.实战Spring Boot 4.注册中心eureka。");jsonMap.put("studymodel", "2020");//3、添加文档IndexResponse response = client.prepareIndex("book", "doc", "5").setSource(jsonMap).get();//4、获取响应结果DocWriteResponse.Result result = response.getResult();System.out.println(result);//关闭客户端client.close();}
当然还有JSONObject提交的方式,JSON字符串拼接属性提交方式,方法很多,总之添加文档对象数据必须是JSON格式
3、修改文档
/**** 修改文档* @throws Exception*/@Testpublic void test3() throws Exception {//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、创建更新内容UpdateRequest updateRequest = new UpdateRequest();updateRequest.index("book").type("doc").id("2").doc(XContentFactory.jsonBuilder().startObject().field("name", "spring开发框架").field("studymodel", 2018).endObject());//3、执行更新操作UpdateResponse updateResponse = client.update(updateRequest).get();System.out.println(updateResponse);//关闭客户端client.close();}
4、删除文档
/**** 删除文档* @throws Exception*/@Testpublic void test4() throws Exception {//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、根据id删除文档DeleteResponse response = client.prepareDelete("book", "doc", "2").get();System.out.println(response);//关闭客户端client.close();}
5、更新的文档存在则更新,若不存在则添加
/**** 更新的文档存在则更新,若不存在则添加* @throws Exception*/@Testpublic void test5() throws Exception {//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、构造要添加的文档,在更新失败的时候添加该文档XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("description", "零基础开发实战课程").field("name", "spring开发框架").field("studymodel", 2018).endObject();IndexRequest addRequest = new IndexRequest("book", "doc", "2").source(builder);//3、创建更新请求体UpdateRequest request = new UpdateRequest("book", "doc", "2").doc(XContentFactory.jsonBuilder().startObject().field("name", "spring").endObject()).upsert(builder);//4、执行更新UpdateResponse response = client.update(request).get();System.out.println(response);//关闭客户端client.close();}
6、根据id批量查询
/**** 根据id批量查询* @throws Exception*/@Testpublic void test6() throws Exception {//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、构造查询条件MultiGetResponse mResponse = client.prepareMultiGet().add("book", "doc", "1").add("book", "doc", "2").get();for (MultiGetItemResponse response : mResponse) {System.out.println(response.getResponse());}//关闭客户端client.close();}
7、批量增加文档
/**** 批量添加文档* @throws Exception*/@Testpublic void test7() throws Exception {//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、批量添加BulkRequestBuilder requestBuilder = client.prepareBulk();requestBuilder.add(client.prepareIndex("book","doc","3").setSource(XContentFactory.jsonBuilder().startObject().field("description", "java零基础开发实战课程").field("name", "java实战").field("studymodel", 2020).endObject()));requestBuilder.add(client.prepareIndex("book","doc","4").setSource(XContentFactory.jsonBuilder().startObject().field("description", "java001零基础开发实战课程").field("name", "java实战001").field("studymodel", 2020).endObject()));//3、执行批量添加BulkResponse bulkItemResponses = requestBuilder.get();System.out.println(bulkItemResponses.status());//关闭客户端client.close();}
8、查询某个索引下面的所有文档
/**** 查询所有文档* @throws Exception*/@Testpublic void test8() throws Exception {//1、获取客户端连接TransportClient client = ESTools.getTransportClient();//2、构建查询条件QueryBuilder queryBuilder = QueryBuilders.matchAllQuery();SearchResponse resp = client.prepareSearch("book").setQuery(queryBuilder).get();//3、返回结果System.out.println(resp);//关闭客户端client.close();}
Java连接Elasticsearch6.xxx CRUD篇二相关推荐
- Java连接Elasticsearch6.xxx 环境测试篇一
1.首先使用本地Windows安装的ES进行环境测试 第一步:创建索引 使用postman 发送PUT请求:http://localhost:9200/索引名称 {"settings&quo ...
- Java连接Elasticsearch6.xxx 代码高亮显示篇四
1.代码高亮显示 /**** 测试代码高亮显示 * @throws Exception*/@Testpublic void heightCode() throws Exception{//1.获取客户 ...
- Java连接Elasticsearch6.xxx 高级检索篇三
1. termQuery:精确查询 Term Query为精确查询,在搜索时会整体匹配关键字,不再将关键字分词. /**** termQuery* @throws Exception*/@Testpu ...
- Java连接Redis及操作(二)
前言 上一节我们学习了java连接Redis,并且连接Redis成功,今天博主带领大家进行简单的操作Redis.要想对Redis进行Java的操作,必须先了解Redis API(点击这里),可看到AP ...
- Java学习路线(进阶篇二)
文章目录 前言 一.常用API 1.Object(祖宗类) 2.Objects(工具类-提供一些方法完成一些功能) 3.StringBuilder(不可变的字符串类) 4.Math(基本数字运算的方法 ...
- Java连接Memcached进行CRUD
参考这篇博文在本机安装了Memcached 在 Java 中常用的memcached有三个: Memcached Client for Java SpyMemcached XMemcached 这里使 ...
- JAVA学习之路--基础篇三
目录 关于Java中从键盘输入的语句 nextxxx().next().nextLine()的区别 语句 if和if else语句 Switch语句 for语句 while和do..while bre ...
- mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...
另外附上mongodb eclipse插件地址: http://www.jumperz.net/update/ import java.net.UnknownHostException;import ...
- 【转】java提高篇(二)-----理解java的三大特性之继承
[转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...
最新文章
- Sciences:用膳食纤维钓出15株缓解糖尿病的细菌!
- 爸爸和无我编程十条诫律
- rref--计算行阶梯矩阵
- java log 配置,java日志系统--log4j配置解析过程,源码分析
- Spring注意事项(各部分理解)
- Qt Creator设置3D组件属性
- 【杂题集】单题小总结
- DB2数据库常用基本操作命令
- java speex回声消除_android 利用speex 音频降噪,回声消除demo
- video视频播放中trank标签字幕显示问题
- 排序:ORDER BY
- 说话就是生产力-孙路弘讲课笔记
- hahabet05-com:大数据与数据科学课程体系--哈哈电竞
- ZZULIOJ1166: 实数取整(指针专题)
- PVM58N-YY1AGR0BN-1213光电采样编码器
- Threejs实现全景图功能
- 57闭环步进电机57闭环步进电机方案57步进电机42 自己做的闭环驱动器,驱动器是全新的
- 为什么字库取模软件的取模只有人家的一半?
- 7-2 jmu-python-最佳身高 (10分) Python
- ESP8266-12 wifi芯片使用教程1——串口输出Hello world
热门文章
- python1乘到10_python写一个循环1+到10打印计算步骤的脚本——纯粹无聊玩的
- 信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树
- 信息学奥赛一本通 1017:浮点型数据类型存储空间大小 | OpenJudge NOI 1.2 02
- 线性代数 —— 矩阵快速幂
- 动态规划 —— 区间 DP —— 石子合并三讲
- 暑期训练日志----2018.8.9
- 亲戚(信息学奥赛一本通-T1346)
- 珍珠(信息学奥赛一本通-T1384)
- 活动选择(信息学奥赛一本通-T1323)
- 小玉家的电费(洛谷-P1422)