下载地址:速度很快,自己找对应版本就可以
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D
1.安装解压 Elasticsearch 优快云全套地址 : https://download.youkuaiyun.com/download/zhangshengqiang168/13452585
官网地址:https://www.elastic.co/cn/downloads/elasticsearch 需要先安装jdk支持
kibana : https://www.elastic.co/cn/downloads/
2.启动ES 管理员运行\Elasticsearch\elasticsearch-6.2.2\elasticsearch-6.2.2\bin目录下的 elasticsearch.bat 文件
3.启动kibana 管理员运行kibana-6.2.2-windows-x86_64\kibana-6.2.2-windows-x86_64\bin目录下的 kibana.bat 文件
4.访问 es http://localhost:9200/

5.访问kibana http://localhost:5601 通过kibana操作es

6.spring boot 整合Elasticsearch 步骤
1.jar包
<!--spring 整合 elasticSearch-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
2.配置yml ,我的是本地连接 None of the configured nodes are available节点名报错
1.连接ip错误
2.修改ES下config文件下的 elasticsearch.yml文件 17行 cluster.name: elasticsearch 跟你定义的节点名相同 默认 值 elasticsearch
#=====ElasticSearch start======
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
#=====ElasticSearch end======
3.编辑实体 Es使用 创建文档-->索引-->类型-->id @Document配置文档 indexName->索引 type->类型

4.继承ES类CrudRepository org.springframework.data.repository.CrudRepository
启动类加ES 扫包 @EnableElasticsearchRepositories(basePackages = "com.cnczsq.mall.elephant.v1.elasticsearch")


5.Controller测试接口
6.ES约定方法自定义查询
Spring Data 的另一个强大功能,是根据方法名称自动实现功能。
比如:你的方法名叫做:findByTitle,那么它就知道你是根据title查询,然后自动帮你完成,无需写实现类。
当然,方法名称要符合一定的约定:
原文链接:https://blog.youkuaiyun.com/chen_2890/article/details/83895646
| Keyword | Sample | |
| And | findByNameAndPrice | |
| Or | findByNameOrPrice | |
| Is | findByName | |
| Not | findByNameNot | |
| Between | findByPriceBetween | |
| LessThanEqual | findByPriceLessThan | |
| GreaterThanEqual | findByPriceGreaterThan | |
| Before | findByPriceBefore | |
| After | findByPriceAfter | |
| Like | findByNameLike | |
| StartingWith | findByNameStartingWith | |
| EndingWith | findByNameEndingWith | |
| Contains/Containing | findByNameContaining | |
| In | findByNameIn(Collection<String>names) | |
| NotIn | findByNameNotIn(Collection<String>names) | |
| Near | findByStoreNear | |
| True | findByAvailableTrue | |
| False | findByAvailableFalse | |
| OrderBy | findByAvailableTrueOrderByNameDesc |
@RestController
@RequestMapping("/Es")
@Api(tags = "ES测试",description = "ESController")
public class ESController {
@Autowired
private ESMapper esMapper;
//添加文档
@PostMapping("/addmember")
@ApiOperation("添加文档")
public Member addMember(@RequestBody Member member){
return esMapper.save(member);
}
//查询文档
@PostMapping("/find")
@ApiOperation("查询文档")
public Optional<Member> findMember(String id){
return esMapper.findById(id);
}
//查询文档
@PostMapping("/findAll")
@ApiOperation("查询所有文档")
public void findAllMember(){
Iterable<Member> age = esMapper.findAll(Sort.by("six").ascending()); //查询所有根据six正序 排序
Page<Member> all = esMapper.findAll(Pageable.unpaged());
long totalElements = all.getTotalElements(); //总条数
int totalPages = all.getTotalPages(); //总页数
Stream<Member> memberStream = all.get();
System.out.println(totalElements + " "+totalPages +" " +memberStream.toString());
Iterator<Member> iterator = age.iterator();
while (iterator.hasNext()){
Member next = iterator.next();
System.out.println(next);
}
}
//简单自定义查询 ES约定俗称方法名自定义查询
@PostMapping("/findBySix")
@ApiOperation("自定义查询<初级版>")
public List<Member> findBySix(){
List<Member> bySixBetween = esMapper.findBySixBetween(5, 10); //查询six 在5到10之间
System.out.println("bySixBetween "+bySixBetween);
System.out.println();
List<Member> bySix = esMapper.findBySixBetweenOrderBySixDesc(5, 10); //查询six 在5到10之间 按six倒序
System.out.println("bySix "+bySix);
System.out.println();
List<Member> nameLike = esMapper.findByNameLike("天上人间1"); //根据name模糊查询
System.out.println("nameLike "+nameLike);
return bySixBetween;
}
//删除文档
@PostMapping("/delete")
@ApiOperation("删除文档")
public void deleteMember(String id){
boolean b = esMapper.existsById(id);
esMapper.deleteById(id);
System.out.println(b);
}
@PostMapping("/select/custom")
@ApiOperation("自定义查询 <高级版>")
public void selectCustom(){
// 构建查询条件
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
// 添加基本分词查询
// queryBuilder.withQuery(QueryBuilders.matchQuery("name", "无敌哥1丰三朱")); //分词匹配 只要包含其中一个词的都可以被查到
// queryBuilder.withQuery(QueryBuilders.termQuery("age",8)); //准确匹配 疑点:匹配字符串查不到 匹配数字可以
// queryBuilder.withQuery(
// QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name","张三丰")) //布尔查询
// .must(QueryBuilders.matchQuery("age",18)));
// queryBuilder.withQuery(QueryBuilders.fuzzyQuery("address","北京天上人间8")); //模糊查询 有问题查不出来,不知道什么原因
// 排序
// queryBuilder.withSort(SortBuilders.fieldSort("six").order(SortOrder.ASC)); //排序
// 分页:
int page = 0;
int size = 20;
queryBuilder.withPageable(PageRequest.of(page,size));
// 搜索,获取结果
Page<Member> search = esMapper.search(queryBuilder.build());
// 总条数
long total = search.getTotalElements();
System.out.println("总条数 = " + total);
// 总页数
System.out.println("总页数 = " + search.getTotalPages());
// 当前页
System.out.println("当前页:" + search.getNumber());
// 每页大小
System.out.println("每页大小:" + search.getSize());
System.out.println("total = " + total);
for (Member item : search) {
System.out.println(item);
}
}
}
7.自定义查询
本文详细介绍了如何在SpringBoot项目中整合Elasticsearch,包括下载安装、配置连接、自定义查询等步骤,以及常见问题解决方法。
1072

被折叠的 条评论
为什么被折叠?



