• elastaicsearch简单入门项目


    application.yml

    spring:
      elasticsearch:
          host: 目标服务器 #本机就localhost,远程则写公网地址,注意开放端口,下同,例如127.0.0.1
          port: 9300
          cluster-name: my-application
          rest:
            uris: http://目标服务器:9200 
    View Code

    controller

    package com.ruoyi.web.controller.elasticsearchTest.controller;
    
    
    import com.ruoyi.web.controller.elasticsearchTest.domain.Student;
    import com.ruoyi.web.controller.elasticsearchTest.service.StudentImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/student")
    public class StudentController {
        @Autowired
        private ElasticsearchRestTemplate elasticsearchRestTemplate;
        @Autowired
        private StudentImpl studentImpl;
    
        @PostMapping("/batchAdd")
        @ResponseBody
        public  void add(@RequestBody List<Student>students){
            System.out.println(students);
            studentImpl.saveAll(students);
        }
        @PostMapping("/add")
        public void add(@RequestBody Student student){
            studentImpl.save(student);
        }
    
        @PostMapping("/search/name")
        public Object searchName(String keyword){
            List<Student> students = studentImpl.findByNameLike(keyword);
            return students;
        }
    }
    View Code

    ESConfig

    package com.ruoyi.web.controller.elasticsearchTest.config;
    
    import com.ruoyi.common.utils.StringUtils;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.common.settings.Settings;
    import org.elasticsearch.common.transport.TransportAddress;
    import org.elasticsearch.transport.client.PreBuiltTransportClient;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    @Configuration
    public class ESConfig {
    
        @Value("${spring.elasticsearch.host}")
        private String host;
    
        private int port;
        @Value("${spring.elasticsearch.port}")
        private void setPort(String str){
            if(StringUtils.isNotBlank(str)){
                port = Integer.valueOf(str);
            }
        }
        @Value("${spring.elasticsearch.cluster-name}")
        private String clusterName;
    
        @Bean
        public TransportClient client() throws UnknownHostException {
    
            //es集群连接
            TransportAddress node = new TransportAddress(
                    InetAddress.getByName(host),
                    port
            );
    
            //es集群配置(自定义配置) 连接自己安装的集群名称
            Settings settings = Settings.builder()
                    .put("cluster.name", clusterName)
                    .build();
    
            PreBuiltTransportClient client = new PreBuiltTransportClient(settings);
    
            client.addTransportAddress(node);
    
            return client;
        }
    }
    View Code

    domain

    package com.ruoyi.web.controller.elasticsearchTest.domain;
    
    
    import lombok.Data;
    import lombok.experimental.Accessors;
    import org.springframework.data.annotation.Id;
    import org.springframework.data.elasticsearch.annotations.Document;
    import org.springframework.stereotype.Component;
    
    @Component
    @Data
    @Accessors(chain = true)
    @Document(indexName = "student")
    public class Student {
        private  static  final  long serialVersionUID = 1L;
    
        @Id
        private String id;
    
        private String name;
        private String gender;
        private  Integer age;
    }
    View Code

    Impl

    package com.ruoyi.web.controller.elasticsearchTest.service;
    
    import com.ruoyi.web.controller.elasticsearchTest.domain.Student;
    import org.springframework.data.elasticsearch.annotations.Query;
    import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
    import org.springframework.stereotype.Component;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Component
    public interface StudentImpl extends ElasticsearchRepository<Student,String> {
    
        List<Student> findByNameLike(String keyword);
    
        @Query("{\"match_phrase\":{\"name\":\"?0\"}}")
        List<Student>findByNameCustom(String keyword);
    }
    View Code

    [
        {
            "name":"张三",
            "gender":"男",
            "age":24
        },
        {
            "name":"李四",
            "gender":"女",
            "age":22
        },
        {
            "name":"王五",
            "gender":"男",
            "age":33
        }
    ]
    View Code

    调用接口后

    查询接口,查询的是张三的信息。

  • 相关阅读:
    【LeetCode每天一题】Symmetric Tree(对称树)
    【LeetCode每天一题】Same Tree(相同的树)
    【Go】并发
    【LeetCode每天一题】Validate Binary Search Tree(有效的二叉搜索树)
    【LeetCode每天一题】 Unique Binary Search Trees(唯一二叉搜索树)
    【LeetCode每天一题】Binary Tree Inorder Traversal(二叉树的中序遍历)
    【LeetCode每天一题】Reverse Linked List II(旋转链表II)
    【LeetCode每天一题】Subsets II(子集合II)
    【LeetCode每天一题】Partition List(分区链表)
    【Go】面向对象
  • 原文地址:https://www.cnblogs.com/Esquecer/p/15936581.html
Copyright © 2020-2023  润新知