首页 > 其他分享 >ElasticSearch学习 - (六)TransportClient的使用

ElasticSearch学习 - (六)TransportClient的使用

时间:2022-10-11 17:05:13浏览次数:45  
标签:index String 学习 field client ElasticSearch TransportClient type id


前提

/**
* ElasticSearch客户端
*/
@Autowired
private

索引

判断索引是否存在

public boolean isIndexExist(String index) {
return client.admin().indices().prepareExists(index).execute().actionGet().isExists();
}

删除索引

public boolean deleteIndex(String index) {
return isIndexExist(index)
? client.admin().indices().prepareDelete(index).execute().actionGet().isAcknowledged()
: false;
}

新增索引

public boolean addIndex(String index) {
return isIndexExist(index)
? false
: client.admin().indices().prepareCreate(index).execute().actionGet().isAcknowledged();
}

类型

判断inde下指定type是否存在

public boolean isTypeExist(String index, String type) {
return isIndexExist(index)
? client.admin().indices().prepareTypesExists(index).setTypes(type).execute().actionGet().isExists()
: false;
}

新增类型

public boolean addIndexAndType() throws IOException {
String index = "ahut";
String type = "goods";
// 创建索引映射,相当于创建数据库中的表操作
CreateIndexRequestBuilder cib = client.admin().indices().prepareCreate(index);
XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject("properties") // 设置自定义字段
.startObject("goodsName").field("type", "string").endObject() // 商品名称
.startObject("goodsPrice").field("type", "double").endObject()// 商品价格
.startObject("goodsUser").field("type", "string").endObject()// 商品主人
.startObject("goodsTime").field("type", "date").field("format", "yyyy-MM-dd HH:mm:ss").endObject() // 商品上架时间
.endObject().endObject();
cib.addMapping(type, mapping);
return cib.execute().actionGet().isAcknowledged();

文档

新增文档

public long addDocument() throws IOException {
String index = "ahut";
String type = "goods";
// 自定义主键id,这个id也可以不要,让es自动为我们生成id
String id = UUID.randomUUID().toString().replace("-", "");
// 创建文档,相当于往表里面insert一行数据
IndexResponse response = client.prepareIndex(index, type, id)
.setSource(XContentFactory.jsonBuilder().startObject()// 开始
.field("goodsName", "大学英语")// 商品名称
.field("goodsPrice", 22.33)// 商品价格
.field("goodsUser", "大拿")// 商品主人
.field("goodsTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))// 商品上架时间
.endObject())
.get();
return response.getVersion();
}

删除文档

public String deleteDocument() {
String index = "ahut";
String type = "goods";
String id = "5b1c93212c2f4d8e88e6bc91de22d08d";
return client.prepareDelete(index, type, id).get().getId();
}

查询文档

依据id查询

@Test
public void testSearchById() {
String index = "ahut";
String type = "goods";
String id = "9d3bd69ce77f41ab8b12b165483452f6";
GetResponse response = client.prepareGet(index, type, id).execute().actionGet();
String jsonStr = response.getSourceAsString();
if (jsonStr != null) {
System.out.println(jsonStr);
} else {
System.out.println("没有查到");
}
}

查询索引下所有数据

@Test
public void matchAllQuery() {
String index = "ahut";
QueryBuilder query = QueryBuilders.matchAllQuery();
SearchResponse response = client.prepareSearch(index).setQuery(query).execute().actionGet();
for (SearchHit searchHit : response.getHits()) {
String jsonStr = searchHit.getSourceAsString();
System.out.println(jsonStr);

查询类型下所有数据

@Test   
public void matchAllQueryInType() {
String index = "ahut";
String type = "goods";
SearchResponse response = client.prepareSearch(index).setTypes(type).execute().actionGet();
for (SearchHit searchHit : response.getHits()) {
String jsonStr = searchHit.getSourceAsString();
System.out.println(jsonStr);


标签:index,String,学习,field,client,ElasticSearch,TransportClient,type,id
From: https://blog.51cto.com/u_15824687/5747153

相关文章

  • ElasticSearch学习 - (五)SpringBoot集成ElasticSearch5.X
    步骤:添加pom文件依赖配置ElasticSearch使用ElasticSearch的java客户端一、添加pom文件依赖<properties><elasticsearch.version>5.6.4</elasticsearch.version></pr......
  • SpringBoot学习-(十三)SpringBoot中建立WebSocket连接(STOMP)
    STOMP协议介绍STOMP,StreamingTextOrientatedMessageProtocol,是流文本定向消息协议,是一种为MOM(MessageOrientedMiddleware,面向消息的中间件)设计的简单文本协议。它提......
  • ElasticSearch学习 - (一)windows下安装ElasticSearch
    ElasticSearch版本5.6.4要求jdk版本必须为1.8以上1、从官网下载elasticsearch地址:​​https://www.elastic.co/downloads/elasticsearch​​2、解压zip到文件目录3、开启Ela......
  • 组队学习第一次任务
    我参加了DataWhale组织的组队学习,并担任了队长,队伍里大多数是生命科学背景的,好开心。顺便感谢阿瓜的建议!我已经开始找工作了!之前看过一遍西瓜书,现在想复习,多练习公式推导......
  • SpringBoot学习-(十九)SpringBoot定时器#Schedule
    定时器概述后台项目开发中经常会用到定时器,现在实现定时器的方式也是多种多样。下面列举几种常见的定时器实现方式:Quartz:Quartz的使用相当广泛,它是一个功能强大的调度器,当然......
  • SpringBoot学习-(十五)SpringBoot热部署
    热部署最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操......
  • Docker学习(四)
    容器卷记得加入参数:--privileged=trueDocker挂载主机目录访问如果出现cannotopendirectory.:Permissiondenied解决办法:在挂载目录后多加一个--privileged=true参数即......
  • 自动驾驶、移动机器人学习资料:定位建图、环境感知、求职
    1).机器人的带约束轨迹规划杨硕卡内基梅隆大学博士原大疆创新工程师研究方向为高自由度机器人的运动轨迹规划2).ORB-SLAM3原理与代码解析刘国庆上交感知与导航研究所科研助......
  • drf学习笔记
    今日内容概要内置认证类,权限类,频率类django的配置文件每个配置项的作用过滤类的其他使用全局异常处理接口文档今日内容详细内置认证类,权限类,频率类内置的认......
  • 多线程学习笔记(Java深度调试日常学习更新)
    1、单CPU时多线程不带来性能上的提升(有可能在线程切换时导致性能下降)因为多线程中,当一个线程被阻塞时,另一个线程可以继续利用CPU,这样的场景可以充分及时利用CPU2、锁的本......