1 配置文件
spring:
data:
elasticsearch:
cluster-nodes: 10.0.0.1:9300, 10.0.0.2:9300 //es机器ip和端口
cluster-name: cluster //集群名称
2 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
3 创建Elasticsearch数据model
@Document(indexName = "es-index", type = "es-type") //index是文档(Document)的容器,是一类文档的集合,type可以理解成关系数据库中Table
public class DemoModel{
private String id;
@JsonProperty("app_name") //加这个转换es的字段为java字段
private String appName;
@JsonProperty("environment") //加这个转换es的字段为java字段
private String env;
}
4 创建Repository接口
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ESDemoRepository extends ElasticsearchRepository<DemoModel, String> {
@Override
List<DemoModel> findAll(); //es有很多自动处理的方法,直接用就可以了
}
5 查询ES数据
@Service
public class demoBiz {
@Autowired
AitestReplayRepository replayRepository;
public PageInfo<QueryResponse> queryList(Integer pageNum, Integer pageSize) {
Page<DemoModel> demoModel= replayRepository.findAll(PageRequest.of(pageNum - 1 , pageSize)); //es的page从第0页开始,如果页码大于存在页数会报错"unknown instance "
//do something
}
}
6 高级查询
public class demoBiz {
//查询_id在一个列表中,类似于sql的IN
BoolQueryBuilder bqb = QueryBuilders.boolQuery()
.must(QueryBuilders.termsQuery("_id",caseIds));
//把查询条件添加到SearchQuery中,可以添加多个条件
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(bqb)
.withPageable(PageRequest.of(pageNum -1, pageSize))
.build();;
//执行查询并获得结果
Page<AitestRecordCase> search = replayRepository.search(searchQuery);
}
网友评论