XContentBuilder builder = XContentFactory.jsonBuilder(); // 使用XContentBuilder内容生成器builder.startObject();{builder.startObject("properties");{builder.startObject("message");{builder.field("type", "text");}builder.endObject();}builder.endObject();}builder.endObject();
映射作为对象提供的源,弹性搜索内置帮助器,用于生成4.1.5 索引别名JSON
内容XContentBuilder
- 可以在索引创建时设置别名
request.alias(new Alias("twitter_alias").filter(QueryBuilders.termQuery("user", "kimchy"))); //要定义的别名
4.1.6 提供整个源
- 前面我们都是一步一步的设置的,其实也可以提供整个源,包括其所有部分(映射、设置和别名):
request.source("{n" +""settings" : {n" +""number_of_shards" : 1,n" +""number_of_replicas" : 0n" +"},n" +""mappings" : {n" +""properties" : {n" +""message" : { "type" : "text" }n" +"}n" +"},n" +""aliases" : {n" +""twitter_alias" : {}n" +"}n" +"}", XContentType.JSON);
作为 JSON 字符串提供的源 。它也可以作为 或 提供 。MapXContentBuilder
4.1.7 可选参数
- 可以选择提供以下参数:
request.setTimeout(TimeValue.timeValueMinutes(2));
超时以等待所有节点将索引创建确认为TimeValue
request.setMasterTimeout(TimeValue.timeValueMinutes(1));
以作为TimeValue
request.waitForActiveShards(ActiveShardCount.from(2));request.waitForActiveShards(ActiveShardCount.DEFAULT);
在创建索引4.1.8 同步执行API
返回响应之前等待的活动分片副本数,作为in
t在创建索引API
返回响应之前等待的活动分片副本数,作为ActiveShardCount
- 以下列方式执行 时,客户端将等待 返回 ,然后再继续执行代码:
CreateIndexRequest CreateIndexResponse
CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
同步调用可能会引发 在高级 REST 客户端中无法解析 REST 响应、请求会发出时间或类似情况下没有从服务器返回的响应的情况下 。4.1.9 异步执行IOException
在服务器返回 或 错误代码的情况下,高级客户端尝试分析响应正文错误详细信息,然后引发泛型,并将原始代码添加为抑制异常 。4xx 5xx ElasticsearchExceptionResponseException
- 也可以以异步方式执行 ,以便客户端可以直接返回 。用户需要指定如何通过将请求和侦听器传递到异步创建索引方法来处理响应或潜在故障:
CreateIndexRequest
client.indices().createAsync(request, RequestOptions.DEFAULT, listener);
执行完成时要执行和要使用的CreateIndexRequest ActionListener
- 异步方法不会阻止并立即返回 。完成后,如果执行成功完成,则使用
onResponse
方法调用 ,如果执行失败,则使用onFailure
该方法 。失败方案和预期异常与同步执行案例相同 。ActionListener
典型的侦听器如下所示:
ActionListener<CreateIndexResponse> listener =new ActionListener<CreateIndexResponse>() {@Overridepublic void onResponse(CreateIndexResponse createIndexResponse) {//成功执行时调用 。}@Overridepublic void onFailure(Exception e) {//当整个失败时调用}};
4.1.10 创建索引响应
- 返回的允许检索有关执行操作的信息,如下所示:
CreateIndexResponse
boolean acknowledged = createIndexResponse.isAcknowledged(); // <1>boolean shardsAcknowledged = createIndexResponse.isShardsAcknowledged(); // <2>
<1> 指示所有节点是否都已确认请求
<2> 指示在计时之前是否为索引中的每个分片启动所需的分片副本数
4.2 删除索引(Delete Index Api)
4.2.1 案例:
/*** 删除索引.* url:https://i-code.online/* @param args*/public static void main(String[] args) {//1. 创建客户端RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200)));//2. 创建DeleteIndexRequest 接受 index(索引名) 参数DeleteIndexRequest request = new DeleteIndexRequest("student");//超时以等待所有节点确认索引删除 参数为 TimeValue 类型request.timeout(TimeValue.timeValueMinutes(1));//连接master节点的超时时间(使用TimeValue方式)request.masterNodeTimeout(TimeValue.timeValueMinutes(1));try {// 调用deleteAcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);System.out.printf("isAcknowledged:%s", response.isAcknowledged());} catch (IOException e) {e.printStackTrace();}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4月16日新闻早讯,每天60秒读懂世界
- 聊一聊Redis官方置顶推荐的Java客户端Redisson
- 一文讲透FTP和SFTP的区别
- 浅析JavaScript异步到底是怎么实现的?
- JavaScript之dayjs用法,替代moment.js
- 进程、线程、并行与并发
- 10个很棒的JavaScript库,提升Web开发效率
- Java中“::”是什么含义
- Java图形验证码支持gif、中文、算术等
- 一文搞懂分类算法中常用的评估指标