项目创建
添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2.1.7.RELEASE</version> </dependency> <!-- <dependency>--> <!-- <groupId>org.elasticsearch</groupId>--> <!-- <artifactId>elasticsearch</artifactId>--> <!-- <version>6.2.1</version>--> <!-- </dependency>--> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.2.1</version> </dependency>
使用
1、application配置
xuecheng: elasticsearch: hostlist: ${eshostlist:127.0.0.1:9200} #多个结点中间用逗号分隔
2、配置Elasticsearch
- 使用一个client即可,我们使用restHighLevelClient
@Configuration public class ElasticsearchConfig { @Value("${xuecheng.elasticsearch.hostlist}") private String hostlist; @SuppressWarnings("all") @Bean public RestHighLevelClient restHighLevelClient(){ //解析hostlist配置信息 String[] split = hostlist.split(","); //创建HttpHost数组,其中存放es主机和端口的配置信息 HttpHost[] httpHostArray = new HttpHost[split.length]; for(int i=0;i<split.length;i++){ String item = split[i]; httpHostArray[i] = new HttpHost(item.split(":")[0], Integer.parseInt(item.split(":")[1]), "http"); } //创建RestHighLevelClient客户端 return new RestHighLevelClient(RestClient.builder(httpHostArray)); } //项目主要使用RestHighLevelClient,对于低级的客户端暂时不用 @SuppressWarnings("all") @Bean public RestClient restClient(){ //解析hostlist配置信息 String[] split = hostlist.split(","); //创建HttpHost数组,其中存放es主机和端口的配置信息 HttpHost[] httpHostArray = new HttpHost[split.length]; for(int i=0;i<split.length;i++){ String item = split[i]; httpHostArray[i] = new HttpHost(item.split(":")[0], Integer.parseInt(item.split(":")[1]), "http"); } return RestClient.builder(httpHostArray).build(); } }
3、测试
@SpringBootTest @RunWith(SpringRunner.class) public class TestIndex { @Autowired RestHighLevelClient client; //测试中没有使用restClient @Autowired RestClient restClient; //创建索引库 @Test public void testCreateIndex() throws IOException { //创建索引对象 CreateIndexRequest createIndexRequest = new CreateIndexRequest("xc_course"); //设置参数 createIndexRequest.settings(Settings.builder().put("number_of_shards", "1").put("number_of_replicas", "0")); //指定映射 createIndexRequest.mapping("doc", "{ " + " "properties": { " + " "name": { " + " "type": "text" " + " }, " + " "description": { " + " "type": "text" " + " }, " + " "studymodel": { " + " "type": "keyword" " + " }, " + " "pic":{ " + " "type":"text" " + " } " + " } " + "}", XContentType.JSON); //操作索引的客户端 IndicesClient indices = client.indices(); //执行创建索引库 CreateIndexResponse createIndexResponse = indices.create(createIndexRequest); //得到响应 boolean acknowledged = createIndexResponse.isAcknowledged(); System.out.println(acknowledged); } //删除索引库 @Test public void testDeleteIndex() throws IOException { //删除索引对象 DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("xc_course"); //操作索引的客户端 IndicesClient indices = client.indices(); //执行删除索引 DeleteIndexResponse delete = indices.delete(deleteIndexRequest); //得到响应 boolean acknowledged = delete.isAcknowledged(); System.out.println(acknowledged); } //添加文档 @Test public void testAddDoc() throws IOException { //文档内容 //准备json数据 Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("name", "spring cloud实战"); jsonMap.put("description", "本课程主要从四个章节进行讲解: 1.微服务架构入门 2.spring cloud 基础入门 3.实战Spring Boot 4.注册中心eureka。"); jsonMap.put("studymodel", "201001"); jsonMap.put("pic", "http://xx/xx/abd.png"); //SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //jsonMap.put("timestamp", dateFormat.format(new Date())); //创建索引创建对象 IndexRequest indexRequest = new IndexRequest("xc_course", "doc"); //文档内容 indexRequest.source(jsonMap); //通过client进行http的请求 IndexResponse indexResponse = client.index(indexRequest); DocWriteResponse.Result result = indexResponse.getResult(); System.out.println(result); } //查询文档 @Test public void testGetDoc() throws IOException { //查询请求对象 GetRequest getRequest = new GetRequest("xc_course", "doc", "jxhqfW4B7IA_qgGLOu2z"); GetResponse getResponse = client.get(getRequest); //得到文档的内容 Map<String, Object> sourceAsMap = getResponse.getSourceAsMap(); System.out.println(sourceAsMap); } //更新文档(局部更新) @Test public void updateDoc() throws IOException { UpdateRequest updateRequest = new UpdateRequest("xc_course", "doc", "jxhqfW4B7IA_qgGLOu2z"); Map<String, String> map = new HashMap<>(); map.put("name", "spring"); updateRequest.doc(map); UpdateResponse update = client.update(updateRequest); RestStatus status = update.status(); System.out.println(status); } //根据id删除文档 @Test public void testDelDoc() throws IOException { //删除文档id String id = "jxhqfW4B7IA_qgGLOu2z"; //删除索引请求对象 DeleteRequest deleteRequest = new DeleteRequest("xc_course", "doc", id); //响应对象 DeleteResponse deleteResponse = client.delete(deleteRequest); //获取响应结果 DocWriteResponse.Result result = deleteResponse.getResult(); System.out.println(result); } }