Springboot集成ES并且使用(ElasticSearch)

Springboot集成ES(ElasticSearch)

ElasticSearch Client文档官网

1.maven依赖

在这里插入图片描述
在这里插入图片描述

原生依赖

		<dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
        </dependency>

2.对象初始化,写配置类

在这里插入图片描述

//1.找到对象 2.放入spring容器中
@Configuration
public class ElasticSearchClientConfig {

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

3. 使用索引API操作

3.1 创建索引

@SpringBootTest
class ElasticsearchApi01ApplicationTests {

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

	//测试索引创建
	@Test
	void contextLoads() throws IOException {
		//1.创建索引请求
		CreateIndexRequest request = new CreateIndexRequest("wjm_index");

		//2.执行创建请求 IndecesClient 请求后获得响应
		CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);

		System.out.println(createIndexResponse);

	}
}

在这里插入图片描述
在这里插入图片描述

3.2获取索引

	//测试获取索引
	@Test
	void contextLoads2() throws IOException {
		//1.获取索引请求
		GetIndexRequest getIndexRequest = new GetIndexRequest("wjm_index");

		//2.client 索引操作 获取索引
		GetIndexResponse getIndexResponse = client.indices().get(getIndexRequest, RequestOptions.DEFAULT);

		System.out.println(getIndexResponse);
	}

3.3删除索引

	//测试删除索引
	@Test
	void contextLoads3() throws IOException {
		//1.获取索引请求
		DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("wjm_index");

		//2.client 索引操作 获取索引
		AcknowledgedResponse delete = client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);

		System.out.println(delete.isAcknowledged());

	}

在这里插入图片描述
在这里插入图片描述
没了

4. 使用文档API操作

4.1创建文档

	//创建文档
	@Test
	void contextLoadsDocumentsOne() throws IOException {
		//创建对象
		GamePlayer player = new GamePlayer(1,"一只小小狗",18,"79892965","79892965");

		//创建请求
		IndexRequest request = new IndexRequest("wjm_index");

		//规则  put /wjm_index/_doc/1;
		request.id("1");
		request.timeout(TimeValue.timeValueSeconds(1));
		request.timeout("1s");

		//source  将我们的数据放入请求json
		request.source(JSON.toJSONString(player), XContentType.JSON);

		IndexResponse index = client.index(request, RequestOptions.DEFAULT);

		System.out.println(index.toString());
		System.out.println(index.status());
	}

在这里插入图片描述

4.2获取文档

	@Test
	void contextLoadsDocumentsTwo() throws IOException {

		//获取文档请求
		GetRequest wjm_index = new GetRequest("wjm_index", "1");

		//不获取返回的 文档 的上下文
		//wjm_index.fetchSourceContext(new FetchSourceContext(false));
		//wjm_index.storedFields("_none_");

		//客户端直接获取文档
		GetResponse documentFields = client.get(wjm_index, RequestOptions.DEFAULT);
		boolean exists = client.exists(wjm_index, RequestOptions.DEFAULT);

		System.out.println(documentFields.getSourceAsString());
		System.out.println(documentFields.toString());
		System.out.println(exists);
	}

在这里插入图片描述
在这里插入图片描述

4.3修改文档

	//更新文档
	@Test
	void contextLoadsDocumentsT() throws IOException {

		//获取文档请求
		UpdateRequest updateRequest = new UpdateRequest("wjm_index", "1");

		updateRequest.timeout("1s");

		GamePlayer player = new GamePlayer(1,"一只小小狗",20,"123","123");

		updateRequest.doc(JSON.toJSONString(player),XContentType.JSON);

		UpdateResponse update = client.update(updateRequest, RequestOptions.DEFAULT);

		System.out.println(update.status());
	}

在这里插入图片描述

4.4删除文档

	//删除文档
	@Test
	void contextLoadsDocumentsD() throws IOException {

		//获取文档请求
		DeleteRequest deleteRequest = new DeleteRequest("wjm_index", "1");
		deleteRequest.timeout("1s");
		
		DeleteResponse delete = client.delete(deleteRequest, RequestOptions.DEFAULT);

		System.out.println(delete.status());
	}

4.5批量插入文档

	//批量查询
	@Test
	void contextLoadsDocumentsQP() throws IOException, InterruptedException {

		BulkRequest bulkRequest = new BulkRequest();
		bulkRequest.timeout("10s");

		ArrayList<GamePlayer> gamePlayers = new ArrayList<>();
		for (int i = 0;i<30;i++){
			gamePlayers.add(new GamePlayer(i,"一只小小狗",i,""+i,""+i));
		}

		TimeUnit.SECONDS.sleep(1);

		//批处理请求
		for (int i=0;i<gamePlayers.size();i++){
			bulkRequest.add(
					new IndexRequest("wjm_index")
					.id(""+(i+1))
					.source(JSON.toJSONString(gamePlayers.get(i)),XContentType.JSON)
			);
		}

		BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);

		System.out.println(bulk.status());
	}

4.6批量搜索 中文查不出来

	//批量查询
	@Test
	void contextLoadsDocumentsQP3() throws IOException, InterruptedException {

		SearchRequest searchRequest = new SearchRequest("wjm_index");

		//构建搜索 精确匹配
		SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
		TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("id", "1");

		searchSourceBuilder.query(termQueryBuilder);

		searchSourceBuilder.timeout(new TimeValue(20, TimeUnit.SECONDS));

		//构建搜索放入请求
		searchRequest.source(searchSourceBuilder);

		SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);

		System.out.println(JSON.toJSONString(search.getHits()));
		System.out.println("===============");
		for (SearchHit documentFields:search.getHits().getHits()
			 ) {
			System.out.println(documentFields.getSourceAsMap());
		}
	}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值