前言(。•ᴗ-)_
愉快的周末就这样结束了呢,眼睛一闭一睁,周一就到了,周一的早上是真的醒不来鸭!
最近梅雨季节,大家要记得别感冒了哦~(๑◕ܫ←๑)b
两天过去了,相信大家都想学习了哈,那下面就正式开始吧~нёιιö
环境(。•ᴗ-)_
JDK 1.8
Elsticsearch 7.6.2
Kibana 7.6.2
Windows 10 1903
Maven 3.5.4
如果没有安装Elsticsearch的话请先去康康 SpringBoot集成Elsticsearch-安装篇~✧( ु•⌄• )◞
开始Spring和Elsticsearch的融合ʕ•̫͡•ʔ❤ʕ•̫͡•ʔ
添加Maven依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<!--web启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--单元测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--导入els-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.6.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.66</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
启动类
@SpringBootApplication
public class BaAnimationApplication {
public static void main(String[] args) {
SpringApplication.run(BaAnimationApplication.class,args);
}
}
新建一个配置类,配置ES的IP地址和端口
@Configuration
public class ElasticSearchClientConfig {
@Bean
public RestHighLevelClient restHighLevelClientConfiguration() {
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.01", 9200, HttpHost.DEFAULT_SCHEME_NAME)));
return client;
}
}
现在就可以开始写代码辣~✧( ु•⌄• )◞
测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class ElasticSearchTest {
@Autowired
private RestHighLevelClient restHighLevelClient;
private final String TEST_ES = "test_es";
/**
* 创建一个索引
* @throws IOException
*/
@Test
public void CreateIndexTest() {
//创建新增索引请求
CreateIndexRequest request = new CreateIndexRequest(TEST_ES);
//执行请求
try {
restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
} catch (Exception e) {
//如果索引存在或链接不到ES,则会抛出异常
throw new RuntimeException("创建索引失败啦!");
}
}
}
通过Kibana查看新建索引是否成功
GET test_es
判断一个索引是否存在
@Test
public void existIndex() throws IOException {
//创建索引请求
GetIndexRequest request = new GetIndexRequest(TEST_ES);
//执行请求
boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
System.out.println("exists = " + exists);
}
查看控制台打印结果
删除索引
@Test
public void deleteIndex() throws IOException {
//创建索引请求
DeleteIndexRequest request = new DeleteIndexRequest(TEST_ES);
//执行请求
try {
restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
} catch (Exception e) {
throw new RuntimeException("删除索引失败啦!");
}
}
我们再到Kibana查看test_es这个索引是否还存在
404,删除成功了
现在索引我们有了,就要往里面添加文档了~(。・ω・。)つ━☆
@Test
public void addDocument() throws IOException {
User user = new User();
user.setName("苏玛利");
user.setAge(22);
//创建请求
IndexRequest request = new IndexRequest(TEST_ES);
//设置ID
request.id("1");
//构建对象JSON数据
String jsonString = JSON.toJSONString(user);
//指定数据类型是JSON
request.source(jsonString, XContentType.JSON);
//发起请求
IndexResponse indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);
System.out.println("indexResponse = " + indexResponse.status());
}
查看控制台打印结果
去Kibana康康呢•’-’•) ✧
查询文档数据
@Test
public void getDocument() throws IOException {
//创建请求,查询ID为1的文档
GetRequest getRequest = new GetRequest(TEST_ES,"1");
//执行请求
GetResponse response = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
//获取请求返回的资源
Map<String, Object> source = response.getSource();
System.out.println("source = " + source);
}
查看控制台~|•’-’•) ✧
修改文档信息
@Test
public void putDocument() throws IOException {
//创建请求,修改ID为1的文档数据
UpdateRequest updateRequest = new UpdateRequest(TEST_ES, "1");
//构建新的对象
User user = new User();
user.setName("小苏");
user.setAge(18);
//转换数据
String json = JSON.toJSONString(user);
//添加数据到请求
updateRequest.doc(json,XContentType.JSON);
//发送请求
UpdateResponse update = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
//打印请求结果
System.out.println("update = " + update.status());
}
查看控制台~|•’-’•) ✧
去Kibana康康(っ╹◡╹)ノ❀
id为1的文档信息已经改变了呢~☝ᖗ乛◡乛ᖘ☝ 完美
下面到了删除文档~(͏ ˉ ꈊ ˉ)✧˖°
@Test
public void deleteDocument() throws IOException {
//创建请求,删除ID为1的文档数据
DeleteRequest deleteRequest = new DeleteRequest(TEST_ES, "1");
//发送请求
DeleteResponse deleteResponse = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
//打印响应信息
System.out.println("deleteResponse = " + deleteResponse.status());
}
查看控制台~|•’-’•) ✧
去Kibana康康(っ╹◡╹)ノ❀
查不到了呢~404
到这里,Elsticsearch的增删改查你都掌握了呢(*´∀`)skr
真的!只有这些了呢!| ू•ૅω•́)ᵎᵎᵎ
好好好!其实还有一个操作了啦~(́安◞౪◟排‵)
有没有发现插入的时候,只能一条一条的插入呢?
数据量大的时候,难道循环插入吗,这样性能也太差了吧~
不会吧,不会吧,不会真的有人在用循环插入吧?ʕ ¯͒ ~ ¯͒ ʔ雨女无瓜
查询只能通过ID查询吗?怎么实现高亮呢?
敬请期待《SpringBoot集成Elsticsearch-高级篇~✧( ु•⌄• )◞》
今天的内容也挺多的,需要慢慢消化,不能一口吃成一个胖子鸭~
所以Elsticsearch的高级用法放到下一期讲了哦~
掰掰~( ͡°ᴥ ͡° ʋ)