使用es方法的时候,会有两种,一种是有prepareXXX的前缀的方法,另一种是没有的,问题就是这两种方法效果是一样的,还是不一样的啊?有时候使用挺迷惑的,如果两种的效果一样,es提供一种就可以了吧,例如:
/**
* Indices Exists.
*
* @param request The indices exists request
* @return The result future
* @see Requests#indicesExistsRequest(String...)
*/
ActionFuture<IndicesExistsResponse> exists(IndicesExistsRequest request);
/**
* Indices exists.
*/
IndicesExistsRequestBuilder prepareExists(String... indices);
这两个方法都是检测索引是否存在,二者有区别吗?为什么es源码要提供两种这样的方法,希望哪位大牛能解释解释这个简单的问题,避免以后自己写代码,两种混着用
1 个回复
jianjianhe
赞同来自:
从es代码可以看出,第一种是一个异步操作,返回的是一个future对象,而第二种是一个无返回值的方法,但是提供一个监听器,可以监听response响应,而第三种也是最常用的方法,因为该方法可以同步也可以异步,也可以添加监听器,我觉得平时用第三种prepare前缀的方法比较方便吧