• elasticsearch5-RestAPI操作


    请添加图片描述
    个人名片:

    博主酒徒ᝰ.
    个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
    本篇励志三人行,必有我师焉。

    请添加图片描述
    本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

    【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

    目录

    四、RestAPI

    ES官方提供了各种不同语言的客户端,用来操作ES。
    这些客户端的本质就是组装DSL语句,通过http请求发送给ES。
    官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html

    案例:利用JavaRestClient实现创建、删除索引库,判断索引库是否存在

    1. 准备工程
      导入项目
      导入mysql数据
      修改application.yaml中的url和password,改为自己数据库的位置和密码
    2. 创建索引库
      导入es依赖
    <dependency>
        <groupId>org.elasticsearch.clientgroupId>
        <artifactId>elasticsearch-rest-high-level-clientartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    更改es版本为我们当前使用的版本

    <properties>
    	<elasticsearch.version>7.12.1elasticsearch.version>
    properties>
    
    • 1
    • 2
    • 3

    初始化代码

    public class HotelIndexTest {
        private RestHighLevelClient client;
    
        @BeforeEach
        void setUp() {
            this.client = new RestHighLevelClient(RestClient.builder(
                    HttpHost.create("http://192.168.179.128:9200")
            ));
        }
    
        @AfterEach
        void tearDown() throws IOException {
            this.client.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    建立DSL的JSON参数部分

    package cn.itcast.hotel;
    
    public class HotelConstants {
        public static final String MAPPING_TEMPLATE = "{\n" +
                "  \"mappings\": {\n" +
                "    \"properties\": {\n" +
                "      \"id\": {\n" +
                "        \"type\": \"keyword\"\n" +
                "      },\n" +
                "      \"name\": {\n" +
                "        \"type\": \"text\",\n" +
                "        \"analyzer\": \"ik_max_word\",\n" +
                "        \"copy_to\": \"all\"\n" +
                "      },\n" +
                "      \"address\": {\n" +
                "        \"type\": \"keyword\",\n" +
                "        \"index\": false\n" +
                "      },\n" +
                "      \"price\": {\n" +
                "        \"type\": \"integer\"\n" +
                "      },\n" +
                "      \"score\": {\n" +
                "        \"type\": \"integer\"\n" +
                "      },\n" +
                "      \"brand\": {\n" +
                "        \"type\": \"keyword\",\n" +
                "        \"copy_to\": \"all\"\n" +
                "      },\n" +
                "      \"city\": {\n" +
                "        \"type\": \"keyword\"\n" +
                "      },\n" +
                "      \"starName\": {\n" +
                "        \"type\": \"keyword\"\n" +
                "      },\n" +
                "      \"business\": {\n" +
                "        \"type\": \"keyword\",\n" +
                "        \"copy_to\": \"all\"\n" +
                "      },\n" +
                "      \"location\": {\n" +
                "        \"type\": \"geo_point\"\n" +
                "      },\n" +
                "      \"pic\": {\n" +
                "        \"type\": \"keyword\",\n" +
                "        \"index\": false\n" +
                "      },\n" +
                "      \"all\": {\n" +
                "        \"type\": \"text\",\n" +
                "        \"index\": true,\n" +
                "        \"analyzer\": \"ik_max_word\"\n" +
                "      }\n" +
                "    }\n" +
                "  }\n" +
                "}";
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    发送请求

    @Test
    void testCreateHotelIndex() throws IOException {
        CreateIndexRequest request = new CreateIndexRequest("hotel");
        request.source(MAPPING_TEMPLATE, XContentType.JSON);
        client.indices().create(request, RequestOptions.DEFAULT);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1. 删除索引库
    @Test
    void testDeleteHotelIndex() throws IOException {
        DeleteIndexRequest request = new DeleteIndexRequest("hotel");
        client.indices().delete(request, RequestOptions.DEFAULT);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 判断索引库是否存在
    @Test
    void testExitsHotelIndex() throws IOException {
        GetIndexRequest request = new GetIndexRequest("hotel");
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println(exists);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    总结:

    JavaRestClient操作elasticsearch的流程基本类似。
    核心是client.indices()方法来获取索引库的操作对象。
    索引库操作的基本步骤:
    初始化RestHighLevelClient
    创建XxxIndexRequest。XXX是Create、Get、Delete
    准备DSL( Create时需要,其它是无参)
    发送请求。调用RestHighLevelClient#indices().xxx()方法,xxx是create、exists、delete

  • 相关阅读:
    node版本管理工具nvm的安装卸载与使用(windows)
    《动手学深度学习 Pytorch版》 9.1 门控循环单元(GRU)
    ◢Django 分页+搜索
    浅析RocketMQ-消息重建
    Rust 16: 哈希表(HashMap)
    Vue2封装评论组件详细讲解
    王道考研——操作系统(第二章 进程管理)
    GBase 8c 核心技术简介(中)
    了解Vue
    七月论文审稿GPT第2版:从Meta Nougat、GPT4审稿到Mistral、LongLora
  • 原文地址:https://blog.csdn.net/m0_65144570/article/details/132927996