- 查询结果:
{"_index": "blog1","_type": "_doc","_id": "1","_version": 1,"_seq_no": 0,"_primary_term": 1,"found": true,"_source": {"age": 1,"country": "fuzhou","date": "2020-09-10","name": "ngitvusercancel"}}
上述是一个案例的展示,让我们初步了解通过Java
的高级restful
客户端来访问, 下面我们将进行相关Api
的介绍
4. 索引 API (Index Api)
4.1 创建索引(Create Index API)**
4.1.1 案例:
/** 创建索引.* url:https://i-code.online/*/public static void main(String[] args) {//创建链接信息RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200)));//创建索引请求 索引名称 studentCreateIndexRequest createIndexRequest = new CreateIndexRequest("student-1");//创建索引时可以设置与之相关的 特定配置createIndexRequest.settings(Settings.builder().put("index.number_of_shards",3) //分片数.put("index.number_of_replicas",2) //备份数);//创建文档类型映射createIndexRequest.mApping("{n" +""properties": {n" +""id": {n" +""type": "long",n" +""store": truen" +"},n" +""name": {n" +""type": "text",n" +""index": true,n" +""analyzer": "ik_max_word"n" +"},n" +""content": {n" +""type": "text",n" +""index": true,n" +""analyzer": "ik_max_word"n" +"}n" +"}n" +"}",XContentType.JSON//类型映射,需要的是一个JSON字符串);//可选参数//超时,等待所有节点被确认(使用TimeValue方式)createIndexRequest.setTimeout(TimeValue.timeValueMinutes(1));try {//同步执行CreateIndexResponse createIndexResponse = client.indices().create(createIndexRequest, RequestOptions.DEFAULT);//返回的CreateIndexResponse允许检索有关执行的操作的信息,如下所示:boolean acknowledged = createIndexResponse.isAcknowledged();//指示是否所有节点都已确认请求boolean shardsAcknowledged = createIndexResponse.isShardsAcknowledged();//指示是否在超时之前为索引中的每个分片启动了必需的分片副本数System.out.println("acknowledged:"+acknowledged);System.out.println("shardsAcknowledged:"+shardsAcknowledged);System.out.println(createIndexResponse.index());} catch (IOException e) {e.printStackTrace();}try {//关闭客户端链接client.close();} catch (IOException e) {e.printStackTrace();}}
上述是一个 index 创建的过程,具体的细节操作api
下面详解
4.1.2 创建索引请求
- 需要参数:
CreateIndexRequestindex
CreateIndexRequest request = new CreateIndexRequest("twitter");//<1>
<1>要创建索引
4.1.3 索引设置
- 创建的每个索引都可以具有与其关联的特定设置 。
//此索引的设置request.settings(Settings.builder().put("index.number_of_shards", 3) //分片数.put("index.number_of_replicas", 2)//备份数);
4.1.4 索引映射
- 可以创建索引,并创建其文档类型的映射
request.mapping("{n" +""properties": {n" +""message": {n" +""type": "text"n" +"}n" +"}n" +"}", //<1> 要定义的类型XContentType.JSON); //<2> 此类型的映射,作为 JSON 字符串提供
<1>要定义的类型<2>此类型的映射,作为JSON
字符串提供
- 除了上面显示的示例之外,还可以以不同的方式提供映射源:
String
Map<String, Object> message = new HashMap<>();message.put("type", "text");Map<String, Object> properties = new HashMap<>();properties.put("message", message);Map<String, Object> mapping = new HashMap<>();mapping.put("properties", properties);request.mapping(mapping); //接受map的映射集合,自动转为 json
提供自动转换为JSON
格式的映射源Map
这种方式多层嵌套,在使用过程中注意嵌套,上面标签嵌套:properties -> message -> type
推荐阅读
- 4月16日新闻早讯,每天60秒读懂世界
- 聊一聊Redis官方置顶推荐的Java客户端Redisson
- 一文讲透FTP和SFTP的区别
- 浅析JavaScript异步到底是怎么实现的?
- JavaScript之dayjs用法,替代moment.js
- 进程、线程、并行与并发
- 10个很棒的JavaScript库,提升Web开发效率
- Java中“::”是什么含义
- Java图形验证码支持gif、中文、算术等
- 一文搞懂分类算法中常用的评估指标