ElasticSearch通过api整合java

如需ElasticSearch整合postman基本操作请点击如下链接:

https://blog.csdn.net/m0_61228138/article/details/122862929

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
        <version>3.1.3.RELEASE</version>
    </dependency>
//创建ES客户端
RestHighLevelClient esClient = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost",9200,"http")));

//创建索引
CreateIndexRequest request = new CreateIndexRequest("user");
CreateIndexResponse createIndexResponse = esClient.indices().create(request,RequestOptions.DEFAULT);
//响应状态
boolean acknowledged = createIndexResponse.isAcknowledged();

//查询索引
GetIndexRequest request = new GetIndexRequest("user");
GetIndexResponse getIndexResponse = 
esclient.indices().get(request,RequestOptions.DEFAULT);
//响应状态
boolean acknowledged = getIndexResponse.getAliases();//getMappings(),getSettings()

//删除索引
DeleteIndexRequest request = new DeleteIndexRequest("user");
AcknowledgedResponse response = 
esclient.indices().delete(request,RequestOptions.DEFAULT);
//响应状态
boolean acknowledged = response.isAcknowledged();

//插入数据
IndexRequest request = new IndexRequest();
request.index("user").id("1001");

User user = new User("zhangsan","男",20);
//向ES插入数据,必须将数据转换为JSON格式
ObjectMapper mapper = new ObjectMapper();
String userJson = mapper.writeValueAsString(user);
request.source(userJson,XcontentType.JSON);

IndexResponse response = esClient.index(request,RequestOptions.DEFAULT);

response.getResult();

//修改数据
UpdateRequest request = new UpdateRequest();
request.index("user").id("1001");
request.doc(XContentType.JSON,"sex","女")
UpdateResponse response = esClient.update(request,RequestOptions.DEFAULT);

//查询数据
GetRequest request = new GetRequest();
request.index("user").id("1001");
GetResponse response = esClient.get(request,RequestOptions.DEFAULT);

response.getSourceAsString();

//删除数据
DeleteRequest request = new DeleteRequest();
request.index("user").id("1001");
DeleteResponse response = esClient.delete(request,RequestOptions.DEFAULT)
response.toString();

//批量插入数据
BulkRequest request = new BulkRequest();
request.add(new IndexRequest().index("user").id("1001").source(XCntentType.JSON,"name","zhangsan"));
BulkResponse response =  esClient.bulk(request,RequestOptions.DEFAULT)
response.getTook();//getItems()



//高级查询,查询索引中全部数据
SearchRequest request = new SearchRequest();
request.indices("user");

request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));

SearchResponse response = esClient.search(request,RequestOptions.DEFAULT);

response.getHits();

//条件查询termQuery
SearchRequest request = new SearchRequest();
request.indices("user");

request.source(new SearchSourceBuilder().query(QueryBuilders.termQuery("age",30)));

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();

//分页查询
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
builder.from(0);
builder.size(2);
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();


//排序
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
builder.sort("age",SortOrder.DESC);
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();

//过滤字段
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());
String[] excludes = {"age"};
String[] includes = {}
builder.fetchSource(includes,excludes);
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();

//组合查询
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
builder.query(boolQueryBuilder);
boolQueryBuilder.must(QueryBuilders.matchQuery("age",30));
boolQueryBuilder.mustNot(QueryBuilders.matchQuery("sex","男"));
boolQueryBuilder.should(QueryBuilders.matchQuery("age",30));
boolQueryBuilder.should(QueryBuilders.matchQuery("age",40));
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();

//范围查询
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age");
rangeQuery.gte(30);
rangeQuery.lte(40);
builder.query(rangeQuery);
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();


//模糊查询
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.fuzzyQuery("name","wangwu").fuzziness(Fuzziness.ONE));
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();

//高亮查询
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termQuery("name","zhangsan");
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.preTags("<font color='red'>");
highlightBuilder.field("name");
highlightBuilder.postTags("</font>");
builder.highlighter(highlightBuilder);
builder.query(termsQueryBuilder)
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();


//聚合查询
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
AggregationBuilder aggregationBuilder = AggregationBuilders.max("maxAge").field("age");

builder.aggregation(aggregationBuilder);
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();

//分组查询
SearchRequest request = new SearchRequest();
request.indices("user");
SearchSourceBuilder builder = new SearchSourceBuilder();
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("ageGroup").field("age");

builder.aggregation(aggregationBuilder);
request.source(builder);

SearchResponse response = esClient.search(request,RequestOption.DEFAULT);

response.getHits();


//关闭ES客户端
esClient.close
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于Spring Boot集成Elasticsearch Java API Client,你可以按照以下步骤进行操作: 1. 首先,你需要在你的项目中添加Elasticsearch的依赖。可以在官方文档()中找到相关的依赖信息。 2. 接下来,你可以通过创建低级别的RestClient来连接到Elasticsearch。你可以使用以下代码片段来创建一个基于RestClient的传输对象: ```java RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200)).build(); ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper()); ElasticsearchClient client = new ElasticsearchClient(transport); ``` 3. 一旦你建立了与Elasticsearch的连接,你就可以使用ElasticsearchClient来执行各种操作。比如,你可以使用以下代码来创建一个索引: ```java CreateIndexResponse createIndexResponse = client.indices().create(c -> c.index("newapi")); ``` 在这个例子中,"newapi"是你要创建的索引的名称。 所以,以上是使用Spring Boot集成Elasticsearch Java API Client的基本步骤。你可以根据你的具体需求进一步使用ElasticsearchAPI来完成其他操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [springboo整合elasticSearch8 java client api](https://blog.csdn.net/A434534658/article/details/125239480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG制造者木容

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值