Java使用elasticsearch基础API使用案例讲解

网友投稿 360 2022-10-08


Java使用elasticsearch基础API使用案例讲解

1.依赖

我用的是 springboot 2.2.5.RELEASE 版本,这里只贴出主要依赖:

org.springframework.boot

spring-boot-starter-data-elasticsearch

2.配置+测试源码

这里根据elasticsearch服务端的地址进行配置:

@Configuration

public class ElasticSearchConfig {

@Bean

public RestHighLevelClient restHighLevelClient() {

RestHighLevelClient client = new RestHighLevelClient(

RestClient.builder(

new HttpHost("127.0.0.1", 9200, "http")

));

return client;

}

}

以下是详细的测试代码:

@SpringBootTest

class EsApiApplicationTests {

@Autowired

@Qualifier(value = "restHighLevelClient")

private RestHighLevelClient client;

// 1.创建索引

@Test

void createIndex() throws IOException {

// 创建请求

CreateIndexRequest request = new CreateIndexRequest("yz_index");

// 执行请求,获取响应

CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

System.out.println("creatIndex--" + response);

}

// 2.获取索引,判断是否存在

@Test

void getIndex() throws IOException {

// 创建请求

GetIndexRequest request = new GetIndexRequest("yz_index");

// 执行请求,获取响应

boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);

System.out.println("getIndex--exists--" + exists);

}

// 3.删除索引

@Test

void deleteIndex() throws IOException {

// 创建请求

DeleteIndexRequest request = new DeleteIndexRequest("yz_index");

// 执行请求

AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);

System.out.println("deleteIndex--" + response);

}

// 4.添加文档

@Test

void addDocument() throws IOException {

// 创建对象

User user = new User("java虚拟机", 30);

// 创建索引,即获取索引

IndexRequest indexRequest = new IndexRequest("yz_index");

// 添加规则 /index/_doc/id

indexRequest.id("1");

indexRequest.timeout(TimeValue.timeValueSeconds(1));

// 存入对象

indexRequest.source(jsON.toJSONString(user), XContentType.JSON);

// 发送请求

IndexResponse response = client.index(indexRequest, RequestOptions.DEFAULT);

System.out.println("addDocument--" + response);

}

// 5.获取文档是否存在

@Test

void getDocument() throws IOException {

// 创建get请求

GetRequest getRequest = new GetRequest("yz_index", "1");

// 不获取返回的_source的上下文

getRequest.fetchSourceContext(new FetchSourceContext(false));

getRequest.storedFields("_none_");

// 发送请求

boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);

System.out.println("addDocument--" + exists);

// 6.获取文档信息

if (exists) {

// 创建请求

GetRequest getRequest1 = new GetRequest("yz_index", "1");

// 发送请求

GetResponse response = client.get(getRequest1http://, RequestOptions.DEFAULT);

System.out.println("source--" + response.getSource());

System.out.println("getDocument--" + response.getSourceAsString());

}

// 7.更新文档信息

if (exists) {

// 创建请求

UpdateRequest updateRequest = new UpdateRequest("yz_index", "1");

updateRequest.timeout("1s");

// 修改内容

User user = new User("小米", 10);

updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);

UpdateResponse response = client.update(updateRequest, RequestOptions.DEFAULT);

System.out.println("updateDocument--" + response.status());

}

// 8.删除文档信息

if (exists) {

// 创建请求

DeleteRequest deleteRequest = new DeleteRequest("yz_index", "1");

deletehttp://Request.timeout("1s");

// 修改内容

DeleteResponse response = client.delete(deleteRequest, RequestOptions.DEFAULT);

System.out.println("deleteDocument--" + response.status());

}

}

// 9.批量添加文档

@Test

void batchAddDocument() throws IOException {

// 批量请求

BulkRequest bulkRequest = new BulkRequest();

bulkRequest.timeout("10s");

// 创建对象

ArrayList userArrayList = new ArrayList<>();

userArrayList.add(new User("小米1", 1));

userArrayList.add(new User("小米2", 2));

userArrayList.add(new User("小米3", 3));

userArrayList.add(new User("小米4", 4));

userArrayList.add(new User("小米5", 5));

// 添加请求

for (int i = 0; i < userArrayList.size(); i++) {

bulkRequest.add(new IndexRequest("yz_index")

.id("" + (i + 2))

.source(JSON.toJSONString(userArrayList.get(i)), XContentType.JSON));

}

// 执行请求

BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT);

System.out.println("batchAddDocument--" + response.status());

}

// 10.查询

@Test

void search() throws IOException {

// 创建请求

SearchRequest searchRequest = new SearchRequest("jd_index");

// 构建搜索条件

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title", "杜伽");// 精确查询

searchSourceBuilder.query(termQueryBuilder);

searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

searchRequest.source(searchSourceBuilder);

// 执行请求

SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);

// 解析查询结果

System.out.println("search--getHists--" + JSON.toJSONString(response.getHits()));

for (SearchHit documentFields : response.getHits()) {

System.out.println("search--getHist--" + documentFields.getSourceAsMap());

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何使用Nmap进行端口扫描(六)如何选择要扫描的端口(nmap默认扫描哪些端口)
下一篇:我是一个杀毒软件线程(进程杀毒软件)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~