官方文档 此处
本文使用Elasticsearch版本为7.8.0  创建一个项目 勾选es依赖  编译版本一定是8以上  默认集成的版本 跟我们本地安装的版本不一样  自己指定跟自己es版本匹配即可
<properties>
<java.version>1.8</java.version>
<elasticsearch.version>7.8.0</elasticsearch.version>
</properties>
本文的所有依赖
<properties>
<java.version>1.8</java.version>
<elasticsearch.version>7.8.0</elasticsearch.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.76</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
编写一个配置类创建连接es的客户端
@Configuration
public class ElasticSearchConfig {
@Bean
public RestHighLevelClient restHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")
));
return client;
}
}
测试索引操作
测试创建索引
@SpringBootTest
class FeiEsApiApplicationTests {
@Autowired
private RestHighLevelClient restHighLevelClient;
@SneakyThrows
@Test
void testCreate(){
CreateIndexRequest createIndexRequest = new CreateIndexRequest("fei_index");
CreateIndexResponse response = restHighLevelClient
.indices()
.create(createIndexRequest, RequestOptions.DEFAULT);
System.out.println(response);
}
}
 获取索引
@SneakyThrows
@Test
void testGetIndex() {
GetIndexRequest request = new GetIndexRequest("fei_index");
boolean exists = restHighLevelClient
.indices()
.exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}
 删除索引
@SneakyThrows
@Test
void testDel(){
DeleteIndexRequest request = new DeleteIndexRequest("fei_index");
AcknowledgedResponse response = restHighLevelClient
.indices()
.delete(request, RequestOptions.DEFAULT);
System.out.println(request);
}
 文档操作
添加文档
@SneakyThrows
@Test
void testAddDocument(){
User user = new User("飞飞",24);
IndexRequest request = new IndexRequest("fei_index");
request.id("1");
request.timeout(TimeValue.timeValueSeconds(1));
request.source(JSON.toJSONString(user), XContentType.JSON);
IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
System.out.println(response.toString());
}
 获取文档
@SneakyThrows
@Test
void testIsGet(){
GetRequest request = new GetRequest("fei_index","1");
request.fetchSourceContext(new FetchSourceContext(false));
request.storedFields("_none_");
boolean exists = restHighLevelClient.exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}
 获取文档内容
@SneakyThrows
@Test
void testGetDocument(){
GetRequest request = new GetRequest("fei_index", "1");
GetResponse response = restHighLevelClient.get(request, RequestOptions.DEFAULT);
System.out.println(response.getSourceAsString());
}
 更新文档信息
@Test
@SneakyThrows
void testGetUpd(){
UpdateRequest request = new UpdateRequest("fei_index","1");
request.timeout("1s");
User user = new User("阿飞", 18);
request.doc(JSON.toJSONString(user),XContentType.JSON);
UpdateResponse update = restHighLevelClient.update(request, RequestOptions.DEFAULT);
System.out.println(update);
}
删除文档信息
@SneakyThrows
@Test
void testDelDoc(){
DeleteRequest request = new DeleteRequest("fei_index","2");
DeleteResponse delete = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
System.out.println(delete);
}
 批量操作
@SneakyThrows
@Test
void testBulkReq(){
BulkRequest request = new BulkRequest();
request.timeout("5s");
ArrayList<User> list = new ArrayList<>();
list.add(new User("张三",20));
list.add(new User("张四",21));
list.add(new User("张五",22));
list.add(new User("张六",23));
list.add(new User("张七",24));
for (int i = 0; i < list.size(); i++) {
request.add(new IndexRequest("fei_index")
.id(""+(i+1))
.source(JSON.toJSONString(list.get(i)),XContentType.JSON));
}
BulkResponse bulk = restHighLevelClient.bulk(request, RequestOptions.DEFAULT);
}
 查询
@SneakyThrows
@Test
void testSearch(){
SearchRequest request = new SearchRequest("fei_index");
SearchSourceBuilder builder = new SearchSourceBuilder();
TermQueryBuilder query = QueryBuilders.termQuery("name", "张三");
builder.query(query);
builder.from(0);
builder.size(3);
builder.timeout(new TimeValue(60, TimeUnit.SECONDS));
request.source(builder);
SearchResponse search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
System.out.println(JSON.toJSONString(search.getHits()));
}
|