SpringBoot集成Elasticsearch(一)——索引库创建等

SpringBoot集成elasticsearch系列文章目录

SpringBoot集成Elasticsearch(一)——索引库创建等
SpringBoot集成Elasticsearch(二)——文档管理等
SpringBoot集成Elasticsearch(三)——ElasticSearchRestTemplate类与ElasticsearchRepository类



前言

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。其次是Apache Solr,也是基于Lucene。如果仅用于查询,Solr优势强于Elasticsearch。


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备工作

springData中有elasticsearch开始依赖,工程构建之前最好找到版本之间的依赖。
在这里插入图片描述

在这里插入图片描述

本文springboot工程采用2.3.2.RELEASE版本,与已有的es7.10.1适配,基于此开始构建项目。

二、使用步骤

1.引入依赖

代码如下(示例):

<properties>
        <!--告诉springboot我们处理的ES的版本-->
        <elasticsearch.version>7.10.2</elasticsearch.version>
</properties>

<dependencies>
	<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
</dependencies>

2.yml配置es集群

代码如下(示例):单机配置一个即可

spring:
  elasticsearch:
    rest:
      uris:
        - 192.168.53.112:9200
        - 192.168.53.113:9200
        - 192.168.53.114:9200

3.简单Test

代码如下(示例):

3.1 创建索引以及分片设置

@Test
public void createIndex() throws Exception{
  //1 创建索引并设置分片
  //1.1 创建一个RestHightLevelClient对象,相当于和服务端建立连接。
  RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
  		  //没有集群的话  此处可new 一个即可。
          new HttpHost("192.168.53.112",9200)
          new HttpHost("192.168.53.113",9200),
          new HttpHost("192.168.53.114",9200),
  ));

  //1.2 使用client的索引管理的对象,indices()返回索引管理对象。
  IndicesClient indicesClient = client.indices();
  //两个参数
  //1.2.1 创建索引请求对象  参数:创建的索引库的名称
  CreateIndexRequest request = new CreateIndexRequest("hello")
  			    .settings(Settings.builder()
                        .put("number_of_shards", 5)
                        .put("number_of_replicas", 1)
                        .build()
                );
  //1.2.2 请求选项,使用默认值。配置请求头,主要用于认证。
  CreateIndexResponse response = indicesClient.create(request,   RequestOptions.DEFAULT);

  //显示结果
  System.out.println(response.toString());
 }

3.2 创建索引库并设置mapping信息

@Test
public void createIndexAndMapping() throws Exception{
	RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
  		  //没有集群的话  此处可new 一个即可。
          new HttpHost("192.168.53.112",9200)
          new HttpHost("192.168.53.113",9200),
          new HttpHost("192.168.53.114",9200),
  	));
    //创建json数据
    XContentBuilder mappings = XContentFactory.jsonBuilder()
            .startObject()
               .startObject("properties")
                    .startObject("id")
                        .field("type","long")
                    .endObject()
                    .startObject("title")
                        .field("type","text")
                        .field("analyzer","ik_smart")
                        .field("store",true)
                    .endObject()
                .endObject()
            .endObject();

    //创建索引请求对象  参数:创建的索引库的名称,分片副片数量以及mapping信息
    CreateIndexRequest request = new CreateIndexRequest("hello1")
            .settings(Settings.builder()
                    .put("number_of_shards", 5)
                    .put("number_of_replicas", 1)
                    .build()
            )
            .mapping(mappings);

   //两个参数
    //1 创建索引请求对象  参数:创建的索引库的名称
    //2 请求选项,使用默认值。配置请求头,主要用于认证。
    CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

    //显示结果
    System.out.println(response.toString());
	}
}

3.3删除索引库

@Test
public void deleteIndex() throws Exception{
	RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
  		  //没有集群的话  此处可new 一个即可。
          new HttpHost("192.168.53.112",9200)
          new HttpHost("192.168.53.113",9200),
          new HttpHost("192.168.53.114",9200),
  	));
		//删除索引库
        AcknowledgedResponse response = client.indices().delete(new DeleteIndexRequest("hello"), RequestOptions.DEFAULT);

        //显示结果
        System.out.println(response.toString());
  	
}  	

3.4 添加索引库字段信息

@Test
public void putIndex() throws Exception{
	RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
  		  //没有集群的话  此处可new 一个即可。
          new HttpHost("192.168.53.112",9200)
          new HttpHost("192.168.53.113",9200),
          new HttpHost("192.168.53.114",9200),
  	));
  	
  	String mappings = "{\n" +
                "\t\t\t\"properties\":{\n" +
                "\t\t\t\t\"id\":{\n" +
                "\t\t\t\t\t\"type\" : \"long\"\n" +
                "\t\t\t\t},\n" +
                "\t\t\t\t\"title\" :{\n" +
                "\t\t\t\t\t\"type\" : \"text\",\n" +
                "\t\t\t\t\t\"analyzer\" : \"ik_smart\",\n" +
                "\t\t\t\t\t\"store\" : true\n" +
                "\t\t\t\t},\n" +
                "\t\t\t\t\" content\" :{\n" +
                "\t\t\t\t\t\"type\" : \"text\",\n" +
                "\t\t\t\t\t\"analyzer\" : \"ik_smart\",\n" +
                "\t\t\t\t\t\"store\" :true\n" +
                "\t\t\t\t}\n" +
                "\t\t\t}\n" +
                "\t\t}";
		//将字符串以json形式发送
        PutMappingRequest request = new PutMappingRequest("hello1")
                .source(mappings, XContentType.JSON);

        //修改索引库
        AcknowledgedResponse response = client.indices().putMapping(request, RequestOptions.DEFAULT);

        //显示结果
        System.out.println(response.toString());
}

总结

以上就是这篇文章要讲的内容,本文仅仅简单介绍了es索引库的创建,修改已经字段创建的使用接口,而es还提供了大量能使我们快速便捷地处理数据接口。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Spring Boot是一个用于创建独立的、基于Spring框架的Java应用程序的框架。而Elasticsearch是一个开源的分布式搜索和分析引擎,它提供了强大的全文搜索、实时分析和数据可视化功能。 在Spring Boot中集成Elasticsearch可以通过以下步骤来创建index: 1. 添加Elasticsearch依赖:在`pom.xml`文件中添加Elasticsearch的依赖项,例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 2. 配置Elasticsearch连接:在`application.properties`或`application.yml`文件中配置Elasticsearch的连接信息,例如: ```properties spring.data.elasticsearch.cluster-nodes=localhost:9300 spring.data.elasticsearch.cluster-name=my-cluster ``` 3. 创建实体类:创建一个Java类来表示要存储在Elasticsearch中的数据,例如: ```java @Document(indexName = "my_index", type = "my_type") public class MyEntity { @Id private String id; private String name; // 其他属性和方法 } ``` 4. 创建Repository接口:创建一个继承自`ElasticsearchRepository`的接口,用于对Elasticsearch进行操作,例如: ```java public interface MyEntityRepository extends ElasticsearchRepository<MyEntity, String> { // 自定义查询方法 } ``` 5. 使用Repository操作数据:在需要使用Elasticsearch的地方注入`MyEntityRepository`,然后使用该接口提供的方法进行数据的增删改查操作,例如: ```java @Autowired private MyEntityRepository myEntityRepository; public void saveEntity(MyEntity entity) { myEntityRepository.save(entity); } ``` 以上就是使用Spring Boot集成Elasticsearch创建index的基本步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冉木

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

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

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

打赏作者

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

抵扣说明:

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

余额充值