一文读懂 Java操作Elasticsearch( 二 )

  • 查询结果:
{"_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


推荐阅读