首先在官网下载elasticsearch8.9版本,以及8.9版本的kibana。
解压,点击es8.9bin目录下的elasticsearch.bat文件启动es
启动之后打开idea,添加依赖
com.fasterxml.jackson.core
jackson-databind
2.13.2
org.glassfish
jakarta.json
2.0.1
org.springframework.boot
spring-boot-configuration-processor
true
co.elastic.clients
elasticsearch-java
8.9.0
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-web
2.7.10
之后配置配置文件
@Configuration
public class ElasticSearchConfig {
@Bean
public ElasticsearchClient elasticsearchClient(){
RestClient client = RestClient.builder(new HttpHost("localhost", 9200,"http")).build();
ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper());
return new ElasticsearchClient(transport);
}
}
这时候就已经可以使用了基本使用操作如下代码块
@SpringBootTest
class SpringDataJpaApplicationTests {
@Autowired
private ElasticsearchClient client;
/*创建索引*/
@Test
void test01() throws Exception {
//写法比RestHighLevelClient更加简洁
CreateIndexResponse indexResponse = client.indices().create(c -> c.index("user"));
}
//查询数据
@Test
public void queryTest() throws IOException {
GetIndexResponse getIndexResponse = client.indices().get(i -> i.index("user"));
System.out.println(getIndexResponse);
}
//判断索引是否存在
@Test
public void existsTest() throws IOException {
BooleanResponse booleanResponse = client.indices().exists(e -> e.index("user"));
System.out.println(booleanResponse.value());
}
//删除索引
@Test
public void deleteTest() throws IOException {
DeleteIndexResponse deleteIndexResponse = client.indices().delete(d -> d.index("user"));
System.out.println(deleteIndexResponse.acknowledged());
}
//插入document
@Test
public void addDocumentTest() throws IOException {
User user = new User(1, "张三","123123123");
IndexResponse indexResponse = client.index(i -> i
.index("user")
//设置id
.id("1")
//传入user对象
.document(user));
}
//更新document
@Test
public void updateDocumentTest() throws IOException {
UpdateResponse updateResponse = client.update(u -> u
.index("user")
.id("1")
.doc(new User(1,"user2","123132131"))
, User.class);
}
//查询document
@Test
public void queryDocumentTest() throws IOException {
GetResponse response = client.get(g -> g
.index("user")
.id("1")
, User.class);
System.out.println(response);
System.out.println(response.source());
}
//删除document
@Test
public void deleteDocumentTest() throws IOException {
DeleteResponse response = client.delete(d -> d
.index("user")
.id("1")
);
System.out.println(response);
}
//批量插入document
@Test
public void bulkTest() throws IOException {
List users=new CopyOnWriteArrayList<>();
users.add(new User(1,"张1","1233"));
users.add(new User(2,"张2","1234"));
users.add(new User(3,"张3","1235"));
users.add(new User(4,"张4","1236"));
users.add(new User(5,"张5","1237"));
List< BulkOperation> bulkOperationCopyOnWriteArrayList =new CopyOnWriteArrayList<>();
//遍历插入bulk中
users.stream().forEach(u->{
bulkOperationCopyOnWriteArrayList.add(BulkOperation.of(o ->o
.index(i->i.document(u))));
});
System.out.println(bulkOperationCopyOnWriteArrayList);
BulkResponse response=client.bulk(b->b
.index("user")
.operations(bulkOperationCopyOnWriteArrayList));
System.out.println(response);
}
//查询
/* @Test
public void searchTest() throws IOException {
SearchResponse search = client.search(s -> s
.index("user")
//查询name字段包含hello的document(不使用分词器精确查找)
.query(q -> q
.term(t -> t
.field("name")
.value(v -> v.stringValue("hello"))
))
//分页查询,从第0页开始查询3个document
.from(0)
.size(3)
//按age降序排序
.sort(f->f.field(o->o.field("age").order(SortOrder.Desc))),User.class
);
for (Hit hit : search.hits().hits()) {
System.out.println(hit.source());
}
}*/
}