热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2.JavaAPI操作elasticsearch

新建Maven工程添加依赖:org.elasticsearchela

新建Maven工程

添加依赖:



org.elasticsearch
elasticsearch
7.8.0



org.elasticsearch.client
elasticsearch-rest-high-level-client
7.8.0



org.apache.logging.log4j
log4j-api
2.8.2


org.apache.logging.log4j
log4j-core
2.8.2


com.fasterxml.jackson.core
jackson-databind
2.9.9



junit
junit
4.12

客户端连接:

public class ESTest_Client {
public static void main(String[] args) throws IOException {
// 创建客户端对象,高级别客户端,你需要连接服务器,需要知道ip端口号,访问方式
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
//业务逻辑
System.out.println(client);
// 关闭客户端连接
client.close();
}
}


4.2 索引操作


4.2.1 创建索引

public static void main(String[] args) throws IOException {
// 创建客户端对象,高级别客户端,你需要连接服务器,需要知道ip端口号,访问方式
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
//业务逻辑
System.out.println(client);
// 创建索引,先拿到索引,然后创建,第一个参数是请求对象,后面是选项
CreateIndexRequest request = new CreateIndexRequest("user");//索引名称
// 发完请求,就会有响应
CreateIndexResponse respOnse= client.indices().create(request, RequestOptions.DEFAULT);// 默认请求配置
// 响应的状态
boolean acknowledged = response.isAcknowledged();
//输出true
System.out.println(acknowledged);
// 关闭客户端连接
client.close();
}

查询所有索引发现索引创建成功!

 


4.2.2 索引查询

public class ESTest_Index_Search {
public static void main(String[] args) throws IOException {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
// 查询索引
GetIndexRequest request = new GetIndexRequest("user");
GetIndexResponse respOnse= client.indices().get(request, RequestOptions.DEFAULT);
// 别名操作
System.out.println(response.getAliases());
// 结构
System.out.println(response.getMappings());

client.close();
}
}

输出:

{user=[]}
{user=org.elasticsearch.cluster.metadata.MappingMetadata@e2704661}


4.2.3 索引删除

public class DeleteIndex {
public static void main(String[] args) throws IOException {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
// 删除索引 - 请求对象
DeleteIndexRequest request = new DeleteIndexRequest("user");
// 发送请求,获取响应
AcknowledgedResponse respOnse= client.indices().delete(request,RequestOptions.DEFAULT);
// 操作结果
System.out.println("操作结果 : " + response.isAcknowledged());
client.close();
}
}

 输出true:

 


4.3 文档操作


4.3.1 新建实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private String sex;
private Integer age;
}

4.3.2 插入数据

public class ESTest_Doc_Insert {
public static void main(String[] args) throws IOException {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));

// 插入数据,这里需要的是index
IndexRequest indexRequest = new IndexRequest();
// 索引名字,索引的id
indexRequest.index("user").id("1001");
User user = new User();
user.setName("zhangsan");
user.setAge(30);
user.setSex("男");
// 向ES插入数据,必须将数据转换为json格式
ObjectMapper mapper = new ObjectMapper();
String value = mapper.writeValueAsString(user);
// 放到请求体中
indexRequest.source(value, XContentType.JSON);
IndexResponse respOnse= client.index(indexRequest, RequestOptions.DEFAULT);
//输出:CREATED
System.out.println(response.getResult());
client.close();
}
}

postman获取文档,发现其已经创建成功!

 


4.3.3 修改数据

public class ESTest_Doc_Update {
public static void main(String[] args) throws IOException {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
//修改数据
UpdateRequest request=new UpdateRequest();
request.index("user").id("1001");
request.doc(XContentType.JSON,"sex","女");
UpdateResponse respOnse= client.update(request, RequestOptions.DEFAULT);
//输出:UPDATED
System.out.println(response.getResult());
client.close();
}
}

 


4.3.4 查询数据

/**
* 查询数据
*/
public class ESTest_Doc_Query {
public static void main(String[] args) throws IOException {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
GetRequest request=new GetRequest().index("user").id("1001");
GetResponse respOnse= client.get(request, RequestOptions.DEFAULT);
//打印信息
System.out.println("_index:" + response.getIndex());
System.out.println("_type:" + response.getType());
System.out.println("_id:" + response.getId());
System.out.println("source:" + response.getSourceAsString());
}
}

输出:

_index:user
_type:_doc
_id:1001
source:{"name":"zhangsan","sex":"女","age":30}


4.3.5 数据删除

/**
* 删除数据
*/
public class ESTest_Doc_Delete {
public static void main(String[] args) throws IOException {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
//创建请求对象
DeleteRequest request = new DeleteRequest().index("user").id("1001");
//客户端发送请求,获取响应对象
DeleteResponse respOnse= client.delete(request, RequestOptions.DEFAULT);
//打印信息
System.out.println(response.toString());
}
}

输出:

DeleteResponse[index=user,type=_doc,id=1001,version=3,result=deleted,shards=ShardInfo{total=2, successful=1, failures=[]}]



推荐阅读
  • 本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ... [详细]
  • 本文深入解析了Elasticsearch写入与查询的底层机制。在数据写入过程中,首先会将数据暂存至内存缓冲区,在此阶段数据尚不可被搜索。同时,为了保证数据的持久性和可靠性,系统会将这些数据同步记录到事务日志(translog)中。当内存缓冲区接近满载时,系统会触发刷新操作,将缓冲区中的数据写入到磁盘上的段文件中,从而使其可被搜索。此外,文章还探讨了查询过程中涉及的索引分片、倒排索引等关键技术,为读者提供了全面的技术理解。 ... [详细]
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • Java 中的十进制样式 getZeroDigit()方法,示例 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文介绍了如何通过命令行有效地终止所有 Node.js 进程实例,以解决因端口冲突或其他服务冲突导致的问题。 ... [详细]
  • 本文介绍了如何在Elasticsearch中配置和使用自定义评分脚本。通过将脚本文件放置在指定目录并调用相关API,可以实现灵活的搜索结果评分。此外,还提到了使用原生Java脚本以提高性能。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 本书《.NET Core 2.* 开发者指南》是面向开发者的全面学习与实践手册,涵盖了从基础到高级的各个层面。书中详细解析了 .NET Core 的核心概念,包括如何创建 .NET Core 网站,并通过视频教程直观展示操作过程。此外,还深入探讨了 Startup 类的作用、项目目录结构的组织方式以及如何在应用中使用静态文件等内容。对于希望深入了解 .NET Core 架构和开发技巧的开发者来说,本书提供了丰富的实践案例和详尽的技术指导。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 构建Elasticsearch环境与课程索引
    本章节详细介绍了如何在开发环境中搭建Elasticsearch (ES) 环境,包括安装、启动服务端以及创建索引和映射的具体步骤。对于旧版ES环境的清理方法也进行了说明。 ... [详细]
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
author-avatar
yuliu预留
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有