IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ElasticSearch的java客户端测试增删改查、批量增加 -> 正文阅读

[大数据]ElasticSearch的java客户端测试增删改查、批量增加

1 开发步骤

? 1)创建空项目,新建mudule,项目jdk设置成1.8

?

?

? 2 )创建ElasticSearchClientConfig配置类

package com.kuang.kuangshenesapi.config;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author yulin
 * @create 2021-07-29-14:31
 */
@Configuration
public class ElasticSearchClientConfig {

    //
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")));
        return client;
    }
}

? 3 )创建User实体类

package com.kuang.kuangshenesapi.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;

/**
 * @author yulin
 * @create 2021-07-29-16:43
 */

@Component
public class User {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

? 4 )开始写测试类

package com.kuang.kuangshenesapi;

import ch.qos.logback.core.net.SyslogOutputStream;
import com.alibaba.fastjson.JSON;
import com.kuang.kuangshenesapi.entity.User;
import jdk.nashorn.internal.ir.RuntimeNode;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.Request;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.MatchAllQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;

import javax.naming.directory.SearchResult;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

@SpringBootTest
class KuangshenEsApiApplicationTests {

	@Autowired
	@Qualifier("restHighLevelClient")
	private RestHighLevelClient client;

	//测试索引的创建
	@Test
	void testCreateIndex() throws IOException {
		//创建索引请求
		CreateIndexRequest request = new CreateIndexRequest("zhangsan");
		//执行请求,获取相应
		CreateIndexResponse createIndexResponse = client.indices().create(request,RequestOptions.DEFAULT);
		System.out.println(createIndexResponse);
	}
	//测试索引的获取
	@Test
	void testIndexExist() throws IOException  {
		GetIndexRequest request = new GetIndexRequest("zhangsan");
		boolean exist = client.indices().exists(request,RequestOptions.DEFAULT);
		System.out.println(exist);
	}
	//测试索引的删除
	@Test
	void testIndexDelete() throws IOException {
		DeleteIndexRequest request = new DeleteIndexRequest("zhangsan");
		AcknowledgedResponse delete = client.indices().delete(request,RequestOptions.DEFAULT);
		System.out.println(delete);
	}

	//测试索引的更新

	//添加文档
	@Test
	void testAddDocument() throws IOException {
		//创建对象
		User user = new User("张三",23);
		//创建请求
		IndexRequest request = new IndexRequest("kuang_index");
		//规则  put /kuang_index/_doc/1
		request.id("1");

		request.timeout("1s");
		//将我们的数据放入请求  json
		request.source(JSON.toJSONString(user), XContentType.JSON);

		//客户端发送请求,获取响应结果
		IndexResponse responce = client.index(request,RequestOptions.DEFAULT);

		System.out.println(responce.toString());
		System.out.println(responce.status());

	}

	//获取文档
	@Test
	void testIsExistDocument() throws IOException {
		GetRequest getRequest = new GetRequest("kuang_index","1");
		boolean exist = client.exists(getRequest,RequestOptions.DEFAULT);
		System.out.println(exist);
	}
	//获取文档的信息
	@Test
	void testGetDocumentMessage() throws IOException {
		GetRequest getRequest = new GetRequest("kuang_index","1");
		GetResponse getResponse = client.get(getRequest,RequestOptions.DEFAULT);

		System.out.println(getResponse.getSourceAsString());//打印文档内容
		System.out.println(getResponse);//返回的全部内容和命令一样
	}

	//更新文档信息
	@Test
	void testupdateDocumentMessage() throws IOException {
		UpdateRequest updateRequest = new UpdateRequest("kuang_index","1");
		updateRequest.timeout("1s");
		User user = new User("张纪晓岚",23);
		updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
		UpdateResponse updateResponse = client.update(updateRequest,RequestOptions.DEFAULT);

		System.out.println(updateResponse.status());//返回的全部内容和命令一样
	}

	//删除文档信息
	@Test
	void testdeleteDocument() throws IOException {
		DeleteRequest request = new DeleteRequest("kuang_index","1");
		request.timeout("1s");
		DeleteResponse deleteResponse = client.delete(request,RequestOptions.DEFAULT);
		System.out.println(deleteResponse.status());
	}

	//批量插入数据
	@Test
	void testBulkRequest() throws IOException {
		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s");
		ArrayList<User> userList = new ArrayList<>();
		userList.add(new User("铁臂阿童木",32));
		userList.add(new User("海绵宝宝",26));
		userList.add(new User("拇指姑娘",12));
		userList.add(new User("童话王国",12));
		userList.add(new User("竹篮子",25));
		userList.add(new User("派大星",12));
		//批处理请求
		for (int i = 0;i<userList.size();i++ ){
			bulkRequest.add(new IndexRequest("kuang_index").id(""+(i+1)).source(JSON.toJSONString(userList.get(i)),XContentType.JSON));
		}
		BulkResponse bulkResponse = client.bulk(bulkRequest,RequestOptions.DEFAULT);

		System.out.println(bulkResponse.hasFailures());//是否失败
	}

	@Test
	void testSearch() throws IOException {
		SearchRequest searchRequest = new SearchRequest("kuang_index");
		//构建搜索条件
		SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

		//查询条件,使用QueryBuilders工具类
		//QueryBuilders.termQuery  精确
		//QueryBuilders.matchAllQuery()  匹配所有

		TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name","阿童木");

		//MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();

		searchSourceBuilder.query(termQueryBuilder);
		searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

		searchRequest.source(searchSourceBuilder);

		SearchResponse response = client.search(searchRequest,RequestOptions.DEFAULT);
		SearchHits hits = response.getHits();
		System.out.println(JSON.toJSONString(response.getHits()));
		System.out.println(JSON.toJSONString(hits));
		System.out.println("==========================");
		for(SearchHit ducumentfields : hits.getHits()){
			System.out.println(ducumentfields.getSourceAsMap());
		}
	}
}

最后附上项目结构

?

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:42:40  更:2021-07-31 16:42:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 17:16:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码