赞
踩
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
</dependency>
spring:
data:
elasticsearch: #ElasticsearchProperties
cluster-name: #默认即为elasticsearch
cluster-node: #配置es节点信息,逗号分隔,如果没有指定,则启动ClientNode
String indexName();//索引库的名称,个人建议以项目的名称命名
String type() default "";//类型,个人建议以实体的名称命名
short shards() default 5;//默认分区数
short replicas() default 1;//每个分区默认的备份数
String refreshInterval() default "1s";//刷新间隔
String indexStoreType() default "fs";//索引文件存储类型
public interface TRepository extends ElasticsearchRepository<T, Long>{
}
@Autowired private IBookRepository bookRepository; //查询所有数据 @Override public List<Book> queryAll(){ Iterable<Book> all = bookRepository.findAll(); Iterator<Book> iterator = all.iterator(); List<Book> books = new ArrayList<>(); while(iterator.hasNext()){ books.add(iterator.next()); } return books; } //新增一条数据 @Override public Book addOne(Book book){ return bookRepository.save(book); } //通过id查询数据 @Override public Book getOne(Long id){ Optional<Book> byId = bookRepository.findById(id); return byId.get(); } // 删除 @Override public void delete(Long id){ bookRepository.deleteById(id); } // 更新 @Override public Book update(Book book) { Book save = bookRepository.save(book); return save; }
public Page<User> getUsers() { //创建builder BoolQueryBuilder builder = QueryBuilders.boolQuery(); //.boolQuery()下有must、should以及mustNot 相当于sql中的and、or以及not //设置模糊搜索,真实姓名中包含金的用户 builder.must(QueryBuilders.fuzzyQuery("realname", "金")); //设置用户名为king builder.must(new QueryStringQueryBuilder("king").field("username")); //排序 FieldSortBuilder sort = SortBuilders.fieldSort("age").order(SortOrder.DESC); //设置分页 //====注意!es的分页和Hibernate一样api是从第0页开始的========= PageRequest page = new PageRequest(0, 2); //构建查询 NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder(); //将搜索条件设置到构建中 nativeSearchQueryBuilder.withQuery(builder); //将分页设置到构建中 nativeSearchQueryBuilder.withPageable(page); //将排序设置到构建中 nativeSearchQueryBuilder.withSort(sort); //生产NativeSearchQuery NativeSearchQuery query = nativeSearchQueryBuilder.build(); //执行,返回包装结果的分页 Page<User> resutlList = userRepository.search(query); return resutlList; }
ES中API的端口号是9300而不是9200
ES系统中Elasticsearch.yml配置文件中要加入network.host: 0.0.0.0,否则外网地址访问不了
最新的资料一定在官网上面查看,官网地址:https://www.elastic.co
注意JDK、ES、Springboot三者之间的版本,很多时候错误都是版本冲突引起的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。