一文读懂 Java操作Elasticsearch( 四 )

 
4.2.2 删除索引请求

  • 需要参数: DeleteIndexRequestindex
DeleteIndexRequest request = new DeleteIndexRequest("posts");//<1> <1> 索引(index)名
<1> 索引(index)名
 
4.2.3 可选参数
  • 可以选择提供以下参数:
request.timeout(TimeValue.timeValueMinutes(2));request.timeout("2m");
超时以等待所有节点确认索引删除为 TimeValue 类型
超时以等待所有节点确认索引删除为 String 类型
request.masterNodeTimeout(TimeValue.timeValueMinutes(1));//连接master节点的超时时间(使用TimeValue方式)request.masterNodeTimeout("1m");//连接master节点的超时时间(使用字符串方式)
连接master节点的超时时间(使用TimeValue方式)连接master节点的超时时间(使用字符串方式)
request.indicesOptions(IndicesOptions.lenientExpandOpen());
设置控制如何解析不可用的索引以及如何展开通配符表达式IndicesOptions
 
4.2.4 同步执行
  • 以下列方式执行 DeleteIndexRequest 时,客户端将等待 DeleteIndexResponse 返回 ,然后再继续执行代码: DeleteIndexRequest DeleteIndexResponse
AcknowledgedResponse deleteIndexResponse = client.indices().delete(request, RequestOptions.DEFAULT);
同步调用可能会引发 在高级 REST 客户端中无法解析 REST 响应、请求会发出时间或类似情况下没有从服务器返回的响应的情况下 。 IOException在服务器返回 或 错误代码的情况下,高级客户端尝试分析响应正文错误详细信息,然后引发泛型,并将原始代码添加为抑制异常 。4xx 5xx ElasticsearchExceptionResponseException
 
4.2.5 异步执行
  • 也可以以异步方式执行 ,以便客户端可以直接返回 。用户需要指定如何通过将请求和侦听器传递到异步删除索引方法来处理响应或潜在故障: DeleteIndexRequest
client.indices().deleteAsync(request, RequestOptions.DEFAULT, listener); //<1>
<1> 执行完成时要执行和要使用的DeleteIndexRequest ActionListener

异步方法不会阻止并立即返回 。完成后,如果执行成功完成,则使用 ActionListener#onResponse 方法调用 ,如果执行失败,则使用 ActionListener# onFailure 该方法 。失败方案和预期异常与同步执行案例相同 。
典型的侦听器如下所示:delete-index
ActionListener<AcknowledgedResponse> listener =new ActionListener<AcknowledgedResponse>() {@Overridepublic void onResponse(AcknowledgedResponse deleteIndexResponse) {//成功执行时调用 。}@Overridepublic void onFailure(Exception e) {//当整个失败时调用 。DeleteIndexRequest}}; 
4.2.6 删除索引响应
  • 返回的允许检索有关执行操作的信息,如下所示: DeleteIndexResponse
boolean acknowledged = deleteIndexResponse.isAcknowledged(); //<1> 指示所有节点是否都已确认请求
<1> 指示所有节点是否都已确认请求
  • 如果未找到索引,将引发 : ElasticsearchException
try {DeleteIndexRequest request = new DeleteIndexRequest("does_not_exist");client.indices().delete(request, RequestOptions.DEFAULT);} catch (ElasticsearchException exception) {if (exception.status() == RestStatus.NOT_FOUND) {//如果未找到要删除的索引,则进行""}}
如果未找到要删除的索引,则进行""
 
4.3 索引存在(Index Exists Api) 
4.3.1 案例:/*** 索引是否存在Api* url:www.i-code.online* @param args*/public static void main(String[] args) {RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200)));//创建请求GetIndexRequest request = new GetIndexRequest("student");//<1> 是返回本地信息还是从主节点检索状态request.local(false);//<2> 返回结果为适合人类的格式request.humanReadable(true);try {boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);System.out.println(exists);} catch (IOException e) {e.printStackTrace();}} 
4.3.2 索引存在请求