ES中的api调用测试

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ES中的api调用测试

Java高级REST客户端需要Java 1.8,并依赖于Elasticsearch核心项目。客户端版本与开发客户端的Elasticsearch版本相同。它接受与TransportClient相同的请求参数,并返回相同的响应对象。如果需要将应用程序从TransportClient迁移到新的REST客户端,请参阅迁移指南。


高级客户端保证能够与运行在相同主版本和更高或相同次版本上的任何Elasticsearch节点通信。它不需要与它通信的Elasticsearch节点处于相同的次要版本,因为它是向前兼容的,这意味着它支持与比其开发时所用版本更高版本的Elasticsearch通信。  

  <!--es客户端-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.4.2</version>
        </dependency>

高级Java REST客户端依赖于以下工件及其 传递依赖关系:


org.elasticsearch.client:elasticsearch-rest-client 客户端:弹性搜索-其余-客户端

org.elasticsearch:elasticsearch 组织弹性搜索:弹性搜索


配置 RestHighLevelClient 进行注入

@Configuration
public class GulimallElasticSearchConfig {
    @Bean
    RestHighLevelClient client() {
        RestClientBuilder builder = RestClient.builder(new HttpHost("192.168.107.132", 9200, "http"));
        return new RestHighLevelClient(builder);
    }
    public  static  final RequestOptions COMMON_OPTIONS;
    static {
        RequestOptions.Builder builder=RequestOptions.DEFAULT.toBuilder();
        COMMON_OPTIONS=builder.build();
    }
}

REST高级客户端实例需要REST低级客户端构建器

存储数据

    @Test
    public void indexData() throws IOException {
        System.out.println(client);
        IndexRequest indexRequest = new IndexRequest("users1");
        indexRequest.id("1");
//        indexRequest.source("userName","张三","age",18,"gender","男");
        User user = new User();
        user.setAge(18);
        user.setUserName("tom");
        user.setGender("男");
        String s = JSON.toJSONString(user);
        indexRequest.source(s, XContentType.JSON);//要保存的内容
        //执行保存操作
        IndexResponse index = client.index(indexRequest, GulimallElasticSearchConfig.COMMON_OPTIONS);
        System.out.println(index);
    }
    @Data
    class  User{
        private String userName;
        private  String gender;
        private  Integer age;
    }

SearchRequest

SearchRequest可用于与搜索文档、聚合、建议有关的任何操作,还提供请求突出显示结果文档的方法。

在最基本的形式中,我们可以向请求添加查询:

SearchRequest searchRequest = new SearchRequest(); 
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
searchSourceBuilder.query(QueryBuilders.matchAllQuery()); 
searchRequest.source(searchSourceBuilder); 

创建搜索请求。如果没有参数,这将针对所有索引运行。

大多数搜索参数都添加到SearchSourceBuilder中。它为进入搜索请求主体的所有内容提供了设置器

    @Test
    public void searchTest() throws IOException {
       //1.创建一个检索请求
        SearchRequest searchRequest = new SearchRequest();
        //2.指定索引
        searchRequest.indices("bank");
        //指定DSL,检索条件
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//        searchSourceBuilder.query();
//        searchSourceBuilder.from();
//        searchSourceBuilder.size();
        searchSourceBuilder.query(QueryBuilders.matchQuery("address","mill"));
        System.out.println(searchSourceBuilder.toString());
        //1) 按照年龄聚合
        TermsAggregationBuilder ageAgg = AggregationBuilders.terms("ageAgg").field("age").size(10);
        searchSourceBuilder.aggregation(ageAgg);
        //2)计算平均工资
        AvgAggregationBuilder banlanceAgg = AggregationBuilders.avg("banlanceAgg").field("balance");
        searchSourceBuilder.aggregation(banlanceAgg);
        System.out.println(searchSourceBuilder.toString());
//        ageAgg.subAggregation(banlanceAgg);
//        System.out.println(searchSourceBuilder.toString());
        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = client.search(searchRequest, GulimallElasticSearchConfig.COMMON_OPTIONS);
        //分析结果
        System.out.println(searchResponse.toString());
        SearchHits hits = searchResponse.getHits();
        TotalHits totalHits = hits.getTotalHits();
        Aggregations aggregations = searchResponse.getAggregations();
        Terms ageAgg1 = aggregations.get("ageAgg");
        for (Terms.Bucket bucket : ageAgg1.getBuckets()) {
            Number keyAsNumber = bucket.getKeyAsNumber();
            String keyAsString = bucket.getKeyAsString();
            System.out.println("年龄:"+keyAsString+"---->"+bucket.getDocCount());
        }
        Avg banlanceAgg1 = aggregations.get("banlanceAgg");
        double value = banlanceAgg1.getValue();
        System.out.println("balance"+value);
    }

执行搜索返回的SearchResponse提供了有关搜索执行本身的详细信息以及对返回文档的访问。首先,有一些关于请求执行本身的有用信息,如HTTP状态代码、执行时间或请求是否提前终止或超时


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2天前
|
监控 测试技术 API
关于API接口的性能测试指南
要测试API接口的性能,需先进行功能测试,确保接口正常工作。接着编排性能测试场景,设置运行配置,使用工具如JMeter、Apifox等进行测试,监控性能指标,分析结果,优化调整,并将其纳入持续集成流程,确保高负荷下良好表现。
|
3天前
|
安全 测试技术 API
如何实现API接口的自动化测试?
实现API接口的自动化测试涉及多个关键步骤:确定测试范围和目标、编写测试用例、选择自动化测试工具、搭建测试环境、编写测试脚本、执行测试、分析结果和回归测试。选择合适的工具和考虑团队熟悉度是成功的关键。常用工具包括Postman、JMeter和SoapUI。通过这些步骤和工具,可以有效提高测试效率和质量,确保API的稳定性和可靠性。
|
15天前
|
Java 测试技术 API
拼多多 API 接口申请通过后如何进行测试?
拼多多 API 接口申请通过后,需按以下步骤测试:1. 仔细研读接口文档;2. 搭建测试环境,准备开发工具和模拟请求工具;3. 编写测试代码或使用测试工具;4. 设计测试用例,包括正常、异常和边界情况;5. 验证测试结果,检查返回值和错误处理;6. 记录和分析测试结果,确保 API 的稳定性和性能。
|
15天前
|
数据可视化 API 索引
ES常见Index API操作最佳实践!
【10月更文挑战第21天】
45 1
ES常见Index API操作最佳实践!
|
19天前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
35 1
|
1月前
|
安全 测试技术 API
一图看懂API测试9种方法
一图看懂API测试九种方法:冒烟测试验证基本功能,功能测试确保符合规格,集成测试检查组件协同工作,回归测试防止新变更引入问题,负载测试评估性能稳定性,压力测试挑战极限负载,安全测试发现并修复漏洞,用户界面测试确保UI与API协调,模糊测试提升异常数据处理鲁棒性。
|
3月前
|
监控 数据可视化 测试技术
Apifox 如何进行 API 自动化测试?经验之谈
选择 Apifox 来进行 API 自动化测试能够确保每次迭代的质量,避免引入新的 bug,还要实现自动化测试、定时测试、产品监控、可视化测试、持续集成等,帮助提高效率,通过设计和执行有针对性的测试用例,来全面验证产品功能,确保软件系统能够正常运行,减少上线后的问题。
Apifox 如何进行 API 自动化测试?经验之谈
|
3月前
|
安全 测试技术 API
API 测试是什么?如何进行 API 测试?
在互联网时代,API已成为软件间交互的关键。API测试验证API是否按预期工作,通过检查响应来确保其正确性、可靠性和安全性。与UI测试不同,API测试聚焦底层功能,有助于早期发现并修复缺陷。它能验证软件质量、加速开发周期、促进微服务架构并支持持续集成/交付。常见的测试类型包括单元测试、功能测试、集成测试、性能测试、安全测试及回归测试。使用自动化工具如Apifox能提高测试效率,支持可视化编排、零代码配置流程条件、生成详细测试报告及快速性能测试,从而确保API质量并提升用户体验。
API
10 1
|
3月前
|
测试技术 API
使用wrk对api接口进行性能测试
使用wrk对api接口进行性能测试
下一篇
无影云桌面