1.1 导入es的高阶客户端
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.4.2</version></dependency>
1.2 给容器中注入RestHighLevelClient
@Configurationpublic class ElasticsearchConfig { /** * 通用的请求设置项, 类似于请求头信息 */ public static final RequestOptions COMMON_OPTIONS; static { RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); COMMON_OPTIONS = builder.build(); } /** * 容器注入高阶的rest访问client */ @Bean public RestHighLevelClient elasticsearchRestHighLevelClient() { //final String hostname, final int port, final String scheme //schemeName 默认是 http, 不传也行 HttpHost httpHost = new HttpHost("192.168.56.10", 9200); RestClientBuilder builder = RestClient.builder(httpHost); RestHighLevelClient client = new RestHighLevelClient(builder); return client; }}
1.3 自动注入高阶Client
@Autowiredprivate RestHighLevelClient client;
es中保存数据
@Testvoid indexData() throws IOException { //1.新建索引 IndexRequest indexRequest = new IndexRequest("users"); //2.数据的id indexRequest.id("1"); //第一种保存方式, k-v形式 //indexRequest.source("username", "张三", "age", 18, "gender", "男"); //第二种, 保存json字符串对象的形式 User user = new User(); user.setUsername("张三"); user.setAge(18); user.setGender("男"); String jsonString = JSON.toJSONString(user); //3.构建数据 XContentType ====> 必须要指定内容类型 indexRequest.source(jsonString, XContentType.JSON); //4.执行操作 IndexResponse index = client.index(indexRequest, RequestOptions.DEFAULT); //提取有用的响应数据 System.out.println(index);}
测试批量保存数据
```java
@Test
public void bulkTest() throws IOException {
//1.创建emp集合
List emps = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Emp emp = new Emp(); emp.setId(i); emp.setName("张益达" + i + "号"); emp.setGender(i % 2 == 0 ? "男" : "女"); emp.setProfession(i % 3 == 0 ? "vue开发工程师" : "安卓开发工程师"); emps.add(emp);
}
//2.bulk请求
BulkRequest bulkRequest = new BulkRequest();
for (Emp emp : emps) {
//3.index请求 IndexRequest indexRequest = new IndexRequest("emp"); indexRequest.id(emp.getId().toString()); String jsonString = JSON.toJSONString(emp); indexRequest.source(jsonString, XContentType.JSON); //4.将index请求放入bulkRequest中 bulkRequest.add(indexRequest);
}
//5.执行
BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
BulkItemResponse[] items = bulk.getItems();
List