es集成java代码

 

xml文件里面的id 就等于我们的方法名 class就等于我们的返回值

 

 

 

 

 如果是集群我们就构建多个,如果不是集群我们就构建一个就可以

public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost",9200,"http"),
new HttpHost("localhost",9201,"http")
)
);
}
----------------------------------------------------
es的源码

 

 所有的数据库相关的都放在data里面

 

 

 

 --------------------

更新文档里面的内容

 

 我们的结果都封装到hit里面, 从hit里面拿结果

 

 

package com.kuang.esapi;

import com.alibaba.fastjson.JSON;
import com.kuang.esapi.pojo.User;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
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.action.support.master.AcknowledgedResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
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.client.indices.GetIndexRequest;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilder;
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.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.PostConstruct;
import javax.management.Query;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
import java.util.concurrent.TimeUnit;

@SpringBootTest
class EsapiApplicationTests {

@PostConstruct
void init() {
System.setProperty("es.set.netty.runtime.available.processors", "false");
}

@Autowired
@Qualifier("restHighLevelClient")
private RestHighLevelClient client;
@Test
void contextLoads() {
System.out.println("dd");
}

@Test
public void testCreatIndex() throws IOException {
//创建索引请求
CreateIndexRequest request = new CreateIndexRequest("kuang_index");
//执行创建请求
CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println(createIndexResponse);
}

/**
* 测试获取索引是否存在
* @throws IOException
*/
@Test
public void testExist() throws IOException {
GetIndexRequest getIndexRequest = new GetIndexRequest("kuang_index");
boolean exists = client.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
System.out.println(exists);
}

/**
* 测试获取索引是否删除成功
* @throws IOException
*/
@Test
public void testDelete() throws IOException {
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("kuang_index");
AcknowledgedResponse delete = client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
System.out.println(delete.isAcknowledged());
}

@Test
void testAddDocument() throws IOException {
User user = new User("子昱", 18);
IndexRequest request = new IndexRequest("kuang_index");
//规则 put /kuang_index/_doc/1
request.id("1");
request.timeout(TimeValue.timeValueSeconds(1));
//将我们的数据放入请求 json
IndexRequest source = request.source(JSON.toJSONString(user), XContentType.JSON);
//客户端发送请求
IndexResponse index = client.index(request, RequestOptions.DEFAULT);

System.out.println(index.toString());
System.out.println(index.status());//对应我们的创建的状态
}
@Test
void testIndexExist() throws IOException {
// GetIndexRequest request = new GetIndexRequest("kuang_index");
GetRequest request = new GetRequest("kuang_index", "1");
request.fetchSourceContext(new FetchSourceContext(false));
request.storedFields("_none_");
boolean exists = client.exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}

@Test
void testDocGet() throws IOException {
// GetIndexRequest request = new GetIndexRequest("kuang_index");
GetRequest request = new GetRequest("kuang_index", "1");
GetResponse documentFields = client.get(request, RequestOptions.DEFAULT);
String sourceAsString = documentFields.getSourceAsString();//打印文档的内容
//{"age":18,"name":"子昱"} 获取的是kv字符串
System.out.println(sourceAsString);
//{"_index":"kuang_index","_type":"_doc","_id":"1","_version":1,"_seq_no":0,"_primary_term":1,"found":true,"_source":{"age":18,"name":"子昱"}}
System.out.println(documentFields);
}

@Test
void testPutDoc() throws IOException {
UpdateRequest updateRequest = new UpdateRequest("kuang_index","01");
User user = new User("zhangziyu", 18);
UpdateRequest doc = updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);
UpdateResponse update = client.update(doc, RequestOptions.DEFAULT);
System.out.println(update.status());

}

@Test
void testDelDoc() throws IOException {
DeleteRequest kuang_index = new DeleteRequest("kuang_index", "1");
kuang_index.timeout("1s");
DeleteResponse delete = client.delete(kuang_index, RequestOptions.DEFAULT);
System.out.println(delete.status());
}

@Test
void testPutListDoc() throws IOException {
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("10s");
ArrayList<User> users = new ArrayList<>();
users.add(new User("张子瑜",1));
users.add(new User("张子瑜2",2));
users.add(new User("张子瑜3",3));
users.add(new User("张子瑜4",4));
users.add(new User("张子瑜5",5));
users.add(new User("zzz",8));

for (int i = 0; i < users.size(); i++) {
bulkRequest.add(
new IndexRequest("kuang_index")
.id(""+i+1)
.source(JSON.toJSONString(users.get(i)),XContentType.JSON)
);
}
BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk.hasFailures());//是否失败
}

@Test
void testSearch() throws IOException {
SearchRequest searchRequest = new SearchRequest("kuang_index");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//匹配查询条件 使用s快速匹配
//QueryBuilders.termQuery 精确匹配
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "zhangziyu");
// builder.from(0);
// builder.size(50);
sourceBuilder.query(termQueryBuilder);
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
searchRequest.source(sourceBuilder);
SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
// System.out.println(search.getHits());
// String s = JSON.toJSONString(search.getHits());
// System.out.println(s);
// System.out.println(JSON.toJSONString(search.getHits()));
// System.out.println("------------------");
for (SearchHit hit : search.getHits().getHits()) {
System.out.println(hit.getSourceAsMap());
}


}


}
posted @ 2022-06-05 12:21  lamda表达式先驱  阅读(189)  评论(0)    收藏  举报