2021年大数据ELK(十三):Elasticsearch编程(添加职位数据)
2021/11/30 1:06:02
本文主要是介绍2021年大数据ELK(十三):Elasticsearch编程(添加职位数据),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
全网最详细的大数据ELK文章系列,强烈建议收藏加关注!
新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。
目录
Elasticsearch编程
一、添加职位数据
1、初始化客户端连接
2、实现关闭客户端连接
3、编写代码实现新增职位数据
4、编写测试用例测试添加方法
Elasticsearch编程
一、添加职位数据
1、初始化客户端连接
- 使用RestHighLevelClient构建客户端连接。
- 基于RestClient.builder方法来构建RestClientBuilder
- 用HttpHost来添加ES的节点
参考代码:
private RestHighLevelClient restHighLevelClient; private static final String JOB_IDX_NAME = "job_idx"; public JobFullTextServiceImpl() { restHighLevelClient = new RestHighLevelClient(RestClient.builder( new HttpHost("node1", 9200, "http") , new HttpHost("node2", 9200, "http") , new HttpHost("node3", 9200, "http") )); }
2、实现关闭客户端连接
@Override public void close() { try { restHighLevelClient.close(); } catch (IOException e) { e.printStackTrace(); } }
3、编写代码实现新增职位数据
实现步骤:
- 构建IndexRequest对象,用来描述ES发起请求的数据。
- 设置文档ID。
- 使用FastJSON将实体类对象转换为JSON。
- 使用IndexRequest.source方法设置文档数据,并设置请求的数据为JSON格式。
- 使用ES High level client调用index方法发起请求,将一个文档添加到索引中。
参考代码:
@Override public void add(JobDetail jobDetail) { // 1. 构建IndexRequest对象,用来描述ES发起请求的数据。 IndexRequest indexRequest = new IndexRequest(JOB_IDX_NAME); // 2. 设置文档ID。 indexRequest.id(jobDetail.getId() + ""); // 3. 构建一个实体类对象,并使用FastJSON将实体类对象转换为JSON。 String json = JSON.toJSONString(jobDetail); // 4. 使用IndexRequest.source方法设置请求数据。 indexRequest.source(json); try { // 5. 使用ES High level client调用index方法发起请求 restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT); } catch (IOException e) { e.printStackTrace(); } System.out.println("索引创建成功!"); }
常见错误:
java.lang.IllegalArgumentException: The number of object passed must be even but was [1] at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:474) at org.elasticsearch.action.index.IndexRequest.source(IndexRequest.java:461)
原因:IndexRequest.source要求传递偶数个的参数,但只传递了1个
4、编写测试用例测试添加方法
- 在 test/java 目录中创建一个 cn.it.elasticsearch.service 包。
- 在cn.it.elasticsearch.service 包下创建一个JobFullTextServiceTest类。
- 在@BeforeTest中构建JobFullTextService对象,@AfterTest中调用close方法关闭连接。
- 编写测试用例,构建一个测试用的实体类,测试add方法。
参考代码:
public class JobFullTextServiceTest { private JobFullTextService jobFullTextService; @BeforeTest public void beforeTest() { jobFullTextService = new JobFullTextServiceImpl(); } @Test public void addTest() { // 1. 测试新增索引文档 jobFullTextService = new JobFullTextServiceImpl(); JobDetail jobDetail = new JobDetail(); jobDetail.setId(1); jobDetail.setArea("江苏省-南京市"); jobDetail.setCmp("Elasticsearch大学"); jobDetail.setEdu("本科及以上"); jobDetail.setExp("一年工作经验"); jobDetail.setTitle("大数据工程师"); jobDetail.setJob_type("全职"); jobDetail.setPv("1700次浏览"); jobDetail.setJd("会Hadoop就行"); jobDetail.setSalary("5-9千/月"); jobFullTextService.add(jobDetail); } @AfterTest public void afterTest() { jobFullTextService.close(); } }
这篇关于2021年大数据ELK(十三):Elasticsearch编程(添加职位数据)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Rocket消息队列资料:新手入门指南
- 2024-11-27rocket消息队资料详解与入门指南
- 2024-11-27RocketMQ底层原理资料详解入门教程
- 2024-11-27RocketMQ项目开发资料:新手入门教程
- 2024-11-27RocketMQ项目开发资料详解
- 2024-11-27RocketMQ消息中间件资料入门教程
- 2024-11-27初学者指南:深入了解RocketMQ源码资料
- 2024-11-27Rocket消息队列学习入门指南
- 2024-11-26Rocket消息中间件教程:新手入门详解
- 2024-11-26RocketMQ项目开发教程:新手入门指南