Elasticsearch对象创建测试中new HttpHost和Http.create的区别

90 阅读1分钟

es中new HttpHost和Http.create的区别

我们在进行es测试的时候,会对client对象的创建进行测试,发现将测试代码

   @BeforeEach//
    void setUp(){
        this.client = new RestHighLevelClient(
            RestClient.builder(
                 new HttpHost("http://192.168.101.100:9200")
            )
        );
    }

代码报错

​编辑

修改之后:

​编辑

​编辑

这个细节报错所以我们就要去明白,一个是new,一个是create,同样都是类似创建一个对象的方法到底有什么区别。

new HttpHost("http://192.168.101.100:9200") 是使用 Apache HttpComponents 库创建一个新的 HttpHost 对象,该对象表示要连接的主机和端口。这种方法适用于使用 Apache HttpComponents 库进行更高级别的自定义配置和操作。

Http.create("http://192.168.101.100:9200") 是使用 Elasticsearch 客户端库(例如 Elasticsearch High-Level REST Client)提供的静态方法 Http.create 来创建一个新的 RestClient 对象。这种方法是为了简化 Elasticsearch 客户端的使用,并提供一些预定义的功能和配置。

所以,区别在于使用的库和创建的对象类型。前者是 Apache HttpComponents 库中的 HttpHost 对象,后者是 Elasticsearch 客户端库中的 RestClient 对象。

因此我们在es中需要的是restclient对象,因此我们需要用http.create方法进行对象的创建,大家也可以通过将鼠标放在类的名字上查看返回的对象,或者看继承的类或实现的类来观察他返回对象的类别。