第一种方式连接Es配置Config
第二种 方式连接
spring:
elasticsearch:
rest:
uris: localhost:9200
password: xxx
username: xxx
在pom中导入es的jar包
org.springframework.boot spring-boot-starter-data-elasticsearch
org.elasticsearch.client elasticsearch-rest-high-level-client7.1.0 org.elasticsearch.client elasticsearch-rest-client7.1.0 org.elasticsearch elasticsearch7.1.0
定义dao 接口继承ElasticsearchRepository
import org.springframework.data.elasticsearch.repository.ElasticsearchCrudRepository; public interface EsProductRepository extends ElasticsearchCrudRepository{ }
定义一个controller控制器,操作
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
@Api(tags = "EsProductController", description = "搜索商品管理")
@RequestMapping("/esProduct")
public class EsProductController {
@Autowired
private EsProductService esProductService;
@ApiOperation(value = "导入所有数据库中商品到ES")
@RequestMapping(value = "/importAll", method = RequestMethod.POST)
@ResponseBody
public CommonResult
int count = esProductService.importAll();
return CommonResult.success(count);
}
@ApiOperation(value = "根据id删除商品")
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
@ResponseBody
public CommonResult
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//匹配查询
QueryBuilder queryBuilder = QueryBuilders.matchQuery("字段", 值);
//将匹配查询放入builder
builder.query(queryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;
//精确查询
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//精确查询
TermQueryBuilder termQueryBuilder=new TermQueryBuilder("字段",value);
//将精确查询放到builder
builder.query(termQueryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;
//查询全部
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//查询全部
MatchAllQueryBuilder matchAllQueryBuilder=QueryBuilders.matchAllQuery();
//将匹配查询放入builder
builder.query(matchAllQueryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;
一个值匹配多个字段
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//一个值匹配多个字段
MultiMatchQueryBuilder multiMatchQueryBuilder=QueryBuilders.multiMatchQuery("值","字段1","字段2")
//将匹配查询放入builder
builder.query(multiMatchQueryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;
多个值得精确查询
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//多个值得精确查询
TermQueryBuilder termQueryBuilder=QueryBuilders.termQuery("字段","值1","值2");
//将匹配查询放入builder
builder.query(termQueryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;
bool mustNot 相当于mysql not 查询
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//bool mustnot 相当于数据库 not 查询
BoolQueryBuilder boolQueryBuilder=QueryBuilders.boolQuery();
boolQueryBuilder.mustNot(QueryBuilders.matchQuery("name","尹")).mustNot(QueryBuilders.matchQuery("age",17));
//将not查询放入builder
builder.query(boolQueryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;
bool must 多个字段匹配查
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//bool must 多个字段匹配查
BoolQueryBuilder boolQueryBuilder=QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.matchQuery("字段","值")).must(QueryBuilders.matchQuery("字段","值"));
//将匹配查询放入builder
builder.query(boolQueryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;
bool 一个字段多个值匹配查
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//bool 一个字段多个值匹配查
BoolQueryBuilder boolQueryBuilder=QueryBuilders.boolQuery();
List list=boolQueryBuilder.should();
list.add(QueryBuilders.boolQuery("字段","值"));
list.add(QueryBuilders.boolQuery("字段","值"));
//将bool查询放入builder
builder.query(boolQueryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;
分页查询
SearchRequest request = new SearchRequest();
//创建搜索请求
SearchRequest request = new SearchRequest();
//创建用来放查询条件的的对象
SearchSourceBuilder builder = new SearchSourceBuilder();
//分页
builder .from(0);
builder .size(2);
//将匹配查询放入builder
builder.query(queryBuilder);
//将builder放入请求
request.source(builder);
//发送查询请求(固定写法RequestOptions.DEFAULT)
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
//获取到查到的数据
SearchHit[] hits = response.getHits().getHits();
//创建List集合
List goodsList = new ArrayList<>();
//遍历hits数组放入到实体类
for (SearchHit hit : hits) {
Goods goods = JSONObject.parseObject(hit.getSourceAsString(), Goods.class);
//将实体放到集合
goodsList.add(goods);
}
return goodsList;



