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方法进行对象的创建,大家也可以通过将鼠标放在类的名字上查看返回的对象,或者看继承的类或实现的类来观察他返回对象的类别。