Sprint Boot 集成Elasticsearch 介绍及开发

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:
    (1) 分布式的实时文件存储,每个字段都被索引并可被搜索
    (2) 分布式的实时分析搜索引擎
    (3) 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

1. ES 基础环境部署
    Linux 环境:centos 7.4
    elasticsearch version:"6.3.2",
    cluster_name:elasticsearch

    
    访问:ip:9200 即可查看 ES 相关信息,包括集群名,版本信息等
    这里不做ES的安装配置,后面会有专门讲解 ES的安装及配置,启动等操作的章节,请出门左拐.
    
2. Spring Boot 工程建立

    依赖devops,web及lombok

3. 修改 pom.xml 文件

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

4. 修改 application.properties 配置文件

# elasticsearch集群名称,默认的是elasticsearch
spring.data.elasticsearch.cluster-name=elasticsearch
##配置ES的访问地址
#节点的地址 注意api模式下端口号是9300,千万不要写成9200
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300

5. Entity 实体类编写

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName = "mymayikt", type = "user")
@Data
public class UserEntity {
  @Id
  private String id;
  private String name;
  private int sex;
  private int age;
}

6. Container 接口编写

import com.test.springes.dao.UserReposiory;
import com.test.springes.entity.UserEntity;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import java.util.Optional;
import org.hibernate.validator.constraints.Range;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Api(description = "用户操作接口asdfasdfa")
public class EsController {

  @Autowired
  private UserReposiory userReposiory;

  @PostMapping("/addUser")
  @ApiOperation(value = "获取asdfasdotp", notes="sdfasdfasd")
  public UserEntity addUser(@RequestBody UserEntity user) {
    return userReposiory.save(user);
  }

  @GetMapping("/findUser")
  @ApiOperation(value = "获取otp", notes="通过手机号获取OTP验证码")
  @ApiImplicitParam(name = "id", value = "电话号码", paramType = "query", required = true, dataType = "String")
  public Optional<UserEntity> findUser(@RequestParam(value = "id")  String id) {
    return userReposiory.findById(id);
  }
}

7. Dao 持久层编写

import com.test.springes.entity.UserEntity;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.data.repository.CrudRepository;

public interface UserReposiory extends ElasticsearchRepository<UserEntity, String> {

}

8. main 添加注解

@EnableElasticsearchRepositories(basePackages = "com.test.springes.dao")

代码如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

@SpringBootApplication
@EnableElasticsearchRepositories(basePackages = "com.test.springes.dao")
public class SpringEsApplication {

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

}
发布了220 篇原创文章 · 获赞 16 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/zhanggqianglovec/article/details/103939798