调用elasticsearch通常使用restful风格请求,这里记录一些常用的Java API和Postman Url文章来源:https://www.toymoban.com/news/detail-677128.html
Java API调用Es
1. 查询总文档数
@Test
void getAllCount() {
// RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.3",9200,"http")));
RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.1",9200,"http")));
SearchRequest searchRequest=new SearchRequest();
SearchSourceBuilder searchSourceBuilder=new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.indices("_all");
searchRequest.source(searchSourceBuilder);
try {
SearchResponse searchResponse=client.search(searchRequest, RequestOptions.DEFAULT);
long count=searchResponse.getHits().getTotalHits().value;
System.out.println("192.168.32.3的文档总数量为: "+count);
} catch (IOException e) {
e.printStackTrace();
}
}
2.批量插入100w数据
@Test
public void setESBatchData() throws IOException {
RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.2",9200,"http")));
BulkRequest request=new BulkRequest();
request.timeout("10m");
long startTime = System.currentTimeMillis();
for (int i = 1; i < 1000000; i++) {
// Map<String, String> jsonMap = new HashMap<>();
String name="test"+i;
int age=i;
// jsonMap.put("name", "test"+i);
// jsonMap.put("age", String.valueOf(i));
// String jsonString = formatAsJSON(jsonMap);
IndexRequest indexRequest=new IndexRequest("my_index").source("name",name,"age",age);
request.add(indexRequest);
if(i%10000==0){
BulkResponse response=client.bulk(request,RequestOptions.DEFAULT);
request=new BulkRequest();
if (response.hasFailures()) {
// 处理失败的文档
System.out.println("第"+i/10000+"次批量插入失败");
} else {
System.out.println("第"+i/10000+"次批量插入成功,已插入"+i/10000+"w条");
// 所有文档都已成功插入
}
}
}
long endTime = System.currentTimeMillis();
double timeDifference = (endTime - startTime)/1000;
System.out.println("两次系统时间差:" + timeDifference + " 秒");
// RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
// builder.setHttpAsyncResponseConsumerFactory(new HttpAsyncResponseConsumerFactory.HeapBufferedResponseConsumerFactory(500 * 1024 * 1024));
// RequestConfig config=RequestConfig.custom().setConnectTimeout(60000).setSocketTimeout(600000).build();
// RequestOptions options=builder.setRequestConfig(config).build();
}
3.关闭指定索引
@Test
public void closeESIndex() throws IOException {
//创建es客户端,建立连接
RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.1",9200,"http")));
// String indexName=".ds-ilm-history-5-2023.06.29-000001";
String indexName=".ds-.logs-deprecation.elasticsearch-default-2023.06.29-000001";
// String indexName="my_index";
//根据操作类型创建请求
CloseIndexRequest request=new CloseIndexRequest(indexName);
//执行请求,返回结果
AcknowledgedResponse response=client.indices().close(request,RequestOptions.DEFAULT);
if (response.isAcknowledged()){
System.out.println("索引关闭成功");
}else {
System.out.println("索引关闭失败");
}
//释放连接资源
client.close();
}
4.添加文档
@Test
public void addES() throws IOException {
RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.3",9200,"http")));
String jsonDocument = "{ \"name\": \"test14\", \"age\": \"140\" }";
IndexRequest request=new IndexRequest("my_index").id("14").source(jsonDocument, XContentType.JSON);
IndexResponse response=client.index(request,RequestOptions.DEFAULT);
if(response.getResult()== IndexResponse.Result.CREATED){
System.out.println("文档创建成功");
}else if(response.getResult()==IndexResponse.Result.UPDATED){
System.out.println("文档更新成功");
}
client.close();
}
5.修改文档
@Test
public void updateES() throws IOException {
RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.3",9200,"http")));
UpdateRequest request=new UpdateRequest("my_index","_doc","14");
Map<String,String> updateInfo=new HashMap<>();
request.doc("name","test14_update");
UpdateResponse response=client.update(request,RequestOptions.DEFAULT);
if(response.getResult()== DocWriteResponse.Result.UPDATED){
System.out.println("修改文档成功");
}
client.close();
}
6.删除文档
@Test
public void deleteES() throws IOException {
RestHighLevelClient client=new RestHighLevelClient(RestClient.builder(new HttpHost("192.168.32.3",9200,"http")));
DeleteRequest request=new DeleteRequest("my_index","14");
DeleteResponse response=client.delete(request,RequestOptions.DEFAULT);
if(response.getResult()== DocWriteResponse.Result.DELETED){
System.out.println("删除文档成功");
}
}
Postman请求(DSL)
1.查询全量文档
POST http://192.168.32.2:9201/_search?pretty
{
"size": 1000,
"query": {
"match_all": {}
}
}
2.删除全部文档(保留索引)
POST http://192.168.32.2:9201/_all/_delete_by_query
{
"query": {
"match_all": {}
}
}
3.新增文档
PUT http://192.168.32.2:9201/my_index/_doc/1
{
"name": "test1",
"age": 1
}
4.查看x-pack许可证信息
GET http://192.168.32.2:9201/_xpack?pretty
5.查看集群节点
GET http://192.168.32.2:9200/_cat/nodes?v
6.查看节点信息
GET http://192.168.32.1:9201
7.查询文档总数
GET http://192.168.32.2:9201/_search?pretty
{
"size": 0,
"aggs": {
"total_documents": {
"value_count": {
"field": "_id"
}
}
}
}
8.创建索引
PUT http://192.168.32.2:9200/test_index
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "long"
}
}
}
}
9.删除索引(包括数据)
DELETE http://192.168.32.2:9201/my_index
10.查询集群索引
GET http://192.168.32.2:9201/_cat/indices?v
11.查看指定索引结构
GET http://192.168.32.2:9200/my_index/_mapping
12.开启指定索引
POST http://192.168.32.2:9201/my_index/_open
13.关闭指定索引
POST http://192.168.32.2:9201/my_index/_close
14.定义远程集群
POST http://192.168.32.2:9201/my_index/_close
15.查看远程集群
GET http://192.168.32.2:9201/_remote/info
16.删除远程集群
PUT http://192.168.32.2:9201/_cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"es-source": {
"seeds": null
}
}
}
}
}
17.开启CCR(指定索引)
PUT http://192.168.32.2:9201/my_index/_ccr/follow
{
"remote_cluster": "source",
"leader_index": "my_index"
}
18.暂停CCR
POST http://192.168.32.2:9201/my_index/_ccr/pause_follow
19.删除CCR
POST http://192.168.32.2:9201/my_index/_ccr/unfollow
删除索引也会自动删除CCR文章来源地址https://www.toymoban.com/news/detail-677128.html
20.查看CCR信息
POST http://192.168.32.2:9201/my_index/_ccr/info
21.自动跟随增量同步索引(auto follow)
PUT http://192.168.32.2:9201/_ccr/auto_follow/beats
{
"remote_cluster": "source",
"leader_index_patterns": [
"*"
]
}
到了这里,关于Elasticsearch实现增删改查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!