配置类ElasticSearchConfig
package com.greentran.esdemo.config;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ElasticSearchConfig {
@Bean
public RestHighLevelClient restHighLevelClient() {
return new RestHighLevelClient(
RestClient.builder(
new HttpHost("114.116.111.166", 9200, "http")));
}
}
数据实体类
package com.greentran.esdemo.config;
public class User {
private Integer id;
private String username;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
单元测试
package com.greentran.esdemo;
import com.alibaba.fastjson.JSONObject;
import com.greentran.esdemo.config.User;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.IOException;
@SpringBootTest
class EsdemoApplicationTests {
@Autowired
RestHighLevelClient client;
@Test
void createIndex() throws IOException {
CreateIndexRequest request = new CreateIndexRequest("xk_index");
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println("创建成功,创建的索引名为:" + response.index());
}
@Test
void createDocument() throws IOException {
User user = new User();
user.setId(1);
user.setUsername("汪舰");
IndexRequest request = new IndexRequest("user_index");
request.id("1");
request.timeout(TimeValue.timeValueSeconds(1));
request.source(JSONObject.toJSONString(user), XContentType.JSON);
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
System.out.println("响应结果:"+response.toString());
}
@Test
void query() throws IOException {
SearchRequest request = new SearchRequest("user_index");
SearchSourceBuilder builder = new SearchSourceBuilder();
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("username.keyword", "汪舰");
builder.query(termQueryBuilder);
request.source(builder);
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
SearchHit[] hits = response.getHits().getHits();
System.out.println("共查询到"+hits.length+"条数据");
System.out.println("查询结果:");
for (int i = 0; i < hits.length; i++) {
System.out.println(hits[i].getSourceAsString());
}
}
@Test
void contextLoads() {
}
}