SpringBoot集成Elsticsearch-实战篇~✧( ु•⌄• )◞

前言(。•ᴗ-)_

愉快的周末就这样结束了呢,眼睛一闭一睁,周一就到了,周一的早上是真的醒不来鸭!

最近梅雨季节,大家要记得别感冒了哦~(๑◕ܫ←๑)b
两天过去了,相信大家都想学习了哈,那下面就正式开始吧~нёιιö
在这里插入图片描述

环境(。•ᴗ-)_

JDK 1.8
Elsticsearch 7.6.2
Kibana 7.6.2
Windows 10 1903
Maven 3.5.4

如果没有安装Elsticsearch的话请先去康康 SpringBoot集成Elsticsearch-安装篇~✧( ु•⌄• )◞

开始Spring和Elsticsearch的融合ʕ•̫͡•ʔ❤ʕ•̫͡•ʔ ​​​

添加Maven依赖

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/>
    </parent>
    <dependencies>
        <!--web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--导入els-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.6.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.66</version>
        </dependency>
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

启动类

@SpringBootApplication
public class BaAnimationApplication {

    public static void main(String[] args) {
        SpringApplication.run(BaAnimationApplication.class,args);
    }

}

新建一个配置类,配置ES的IP地址和端口

@Configuration
public class ElasticSearchClientConfig {

    @Bean
    public RestHighLevelClient restHighLevelClientConfiguration() {
        RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.01", 9200, HttpHost.DEFAULT_SCHEME_NAME)));
        return client;
    }
    
}

现在就可以开始写代码辣~✧( ु•⌄• )◞
在这里插入图片描述

测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class ElasticSearchTest {

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    private final String TEST_ES = "test_es";

	/**
     * 创建一个索引
     * @throws IOException
     */
    @Test
    public void CreateIndexTest() {
        //创建新增索引请求
        CreateIndexRequest request = new CreateIndexRequest(TEST_ES);
        //执行请求
        try {
            restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
        } catch (Exception e) {
       		//如果索引存在或链接不到ES,则会抛出异常
            throw new RuntimeException("创建索引失败啦!");
        }
    }
    
}

通过Kibana查看新建索引是否成功

GET test_es
在这里插入图片描述

判断一个索引是否存在

	@Test
    public void existIndex() throws IOException {
        //创建索引请求
        GetIndexRequest request = new GetIndexRequest(TEST_ES);
        //执行请求
        boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println("exists = " + exists);
    }

查看控制台打印结果
在这里插入图片描述
删除索引

	@Test
    public void deleteIndex() throws IOException {
        //创建索引请求
        DeleteIndexRequest request = new DeleteIndexRequest(TEST_ES);
        //执行请求
        try {
            restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
        } catch (Exception e) {
            throw new RuntimeException("删除索引失败啦!");
        }
    }

我们再到Kibana查看test_es这个索引是否还存在
在这里插入图片描述
404删除成功了
在这里插入图片描述
现在索引我们有了,就要往里面添加文档了~(。・ω・。)つ━☆

	@Test
    public void addDocument() throws IOException {
        User user = new User();
        user.setName("苏玛利");
        user.setAge(22);
        //创建请求
        IndexRequest request = new IndexRequest(TEST_ES);
        //设置ID
        request.id("1");
        //构建对象JSON数据
        String jsonString = JSON.toJSONString(user);
        //指定数据类型是JSON
        request.source(jsonString, XContentType.JSON);
        //发起请求
        IndexResponse indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);
        System.out.println("indexResponse = " + indexResponse.status());
    }

查看控制台打印结果
在这里插入图片描述
去Kibana康康呢•’-’•) ✧
在这里插入图片描述
查询文档数据

	@Test
    public void getDocument() throws IOException {
        //创建请求,查询ID为1的文档
        GetRequest getRequest = new GetRequest(TEST_ES,"1");
        //执行请求
        GetResponse response = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        //获取请求返回的资源
        Map<String, Object> source = response.getSource();
        System.out.println("source = " + source);
    }

查看控制台~|•’-’•) ✧
在这里插入图片描述
修改文档信息

	@Test
    public void putDocument() throws IOException {
        //创建请求,修改ID为1的文档数据
        UpdateRequest updateRequest = new UpdateRequest(TEST_ES, "1");
        //构建新的对象
        User user = new User();
        user.setName("小苏");
        user.setAge(18);
        //转换数据
        String json = JSON.toJSONString(user);
        //添加数据到请求
        updateRequest.doc(json,XContentType.JSON);
        //发送请求
        UpdateResponse update = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
        //打印请求结果
        System.out.println("update = " + update.status());
    }

查看控制台~|•’-’•) ✧
在这里插入图片描述
去Kibana康康(っ╹◡╹)ノ❀
在这里插入图片描述
id为1的文档信息已经改变了呢~☝ᖗ乛◡乛ᖘ☝ 完美
在这里插入图片描述
下面到了删除文档~(͏ ˉ ꈊ ˉ)✧˖°

	@Test
    public void deleteDocument() throws IOException {
        //创建请求,删除ID为1的文档数据
        DeleteRequest deleteRequest = new DeleteRequest(TEST_ES, "1");
        //发送请求
        DeleteResponse deleteResponse = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
        //打印响应信息
        System.out.println("deleteResponse = " + deleteResponse.status());
    }

查看控制台~|•’-’•) ✧
在这里插入图片描述
去Kibana康康(っ╹◡╹)ノ❀
在这里插入图片描述
查不到了呢~404
到这里,Elsticsearch的增删改查你都掌握了呢(*´∀`)skr
在这里插入图片描述
真的!只有这些了呢!| ू•ૅω•́)ᵎᵎᵎ
在这里插入图片描述
好好好!其实还有一个操作了啦~(́安◞౪◟排‵)
有没有发现插入的时候,只能一条一条的插入呢?
数据量大的时候,难道循环插入吗,这样性能也太差了吧~
在这里插入图片描述
不会吧,不会吧,不会真的有人在用循环插入吧?ʕ ¯͒ ~ ¯͒ ʔ雨女无瓜
查询只能通过ID查询吗?怎么实现高亮呢?
敬请期待《SpringBoot集成Elsticsearch-高级篇~✧( ु•⌄• )◞》
在这里插入图片描述
今天的内容也挺多的,需要慢慢消化,不能一口吃成一个胖子鸭~
所以Elsticsearch的高级用法放到下一期讲了哦~
掰掰~( ͡°ᴥ ͡° ʋ)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值