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