springboot快速启动(十)——整合elasticsearch

elasticsearch介绍

     ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。

中文社区 下载:https://elasticsearch.cn/download/
目前elastic已升级到7.0以上版本 去除了type概念

整合步骤:
1、添加依赖

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

2、properties配置

#es集群名称
spring.data.elasticsearch.cluster-name=elasticsearch
#es节点  多个节点直接后面","分割,添加地址
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
spring.data.elasticsearch.repositories.enabled=true

3、创建索引对象

@Component
@Document(indexName = "opera",type = "record",shards = 1,replicas = 0)
public interface OperaRepository extends ElasticsearchRepository<OperaBO,String> {

}

4、实体创建 注意序列化

@Data
@Document(indexName = "opera",type = "record")
public class OperaBO implements Serializable {

    private static final long serialVersionUID =1L;
    /**
     * 唯一标识
     */
    private String id;
    /**
     * 被操作人的唯一标识
     */
    private String sourceId;
 
    /**
     * 操作详细记录
     */
    private String operateDetail;
    /**
     * 操作类型 0表示纯动作 1表示编辑
     */
    private Integer operaType;
}

5、测试

@RestController
@RequestMapping("/api/es")
public class Testelastic {


    @Autowired
    private OperaRepository repository;

    /**
     * 保存单条
     * @return
     */
        @RequestMapping(value = "/save", method = RequestMethod.POST)
    public String save() {
        OperaBO operaBO = new OperaBO() {{
            setId(UUID.randomUUID().toString());
            setOperateDetail("测试elastic");
            setSourceId(UUID.randomUUID().toString());
            setModuleName("生产线");
        }};
        repository.save(operaBO);
        return "OK";
    }

    /**
     * 保存多条
     * @return
     */
    @RequestMapping(value = "saveall",method = RequestMethod.GET)
    public String saveAll(){
        List<OperaBO> list = new ArrayList<>(16);
        OperaBO operaBO = new OperaBO() {{
            setId(UUID.randomUUID().toString());
            setOperateDetail("测试elastic1");
            setSourceId("85339f82-25be-474a-8b38-8b522fed33c0");
            setModuleName("生产线1");
            setOperaType(0);
        }};
        OperaBO operaBO1 = new OperaBO() {{
            setId(UUID.randomUUID().toString());
            setOperateDetail("测试elastic2");
            setSourceId("b8ffdd48-332e-4836-bf40-2ce5d1629d10");
            setModuleName("生产线2");
            setOperaType(1);
        }};
        list.add(operaBO);
        list.add(operaBO1);
        repository.saveAll(list);
        return "ok";
    }

    /**
     * 多条件查询
     * @param operaBO
     * @return
     */
    @RequestMapping(value = "search",method = RequestMethod.POST)
    public Object search(@RequestBody OperaBO operaBO){
        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
        queryBuilder.must(QueryBuilders.matchQuery("sourceId", operaBO.getSourceId()));
        queryBuilder.must(QueryBuilders.matchQuery("operaType",operaBO.getOperaType()));
        Iterable<OperaBO> search = repository.search(queryBuilder);
        return search;
    }

    /**
     * 查询全部
     * @return
     */
    @RequestMapping(value = "all",method = RequestMethod.GET)
    public Object searchAll(){
        MatchAllQueryBuilder allQueryBuilder = QueryBuilders.matchAllQuery();
        Iterable<OperaBO> operaBOS = repository.search(allQueryBuilder);
        return  operaBOS;
    }
  /**
     * 查询单条
     * @return
     */
    @RequestMapping(value = "all",method = RequestMethod.GET)
    public Object searchsingle(){
        
        MatchQueryBuilder QueryBuilder = QueryBuilders.matchQuery();
       QueryBuilders.matchQuery("sourceId", operaBO.getSourceId());
        OperaBO  operaBO = repository.search(QueryBuilder);
        return  operaBO;
    }


}

源码地址:https://github.com/MandalasWang/elasticdemo

发布了47 篇原创文章 · 获赞 30 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42083036/article/details/103141731
今日推荐