【自学elasticsearch7】结合es语法和java的HighLevelClient:索引(映射)创建

【自学elasticsearch7】结合es语法和java的HighLevelClient:索引(映射)创建

  • 写在开头
    • 开箱即用的elasticsearch
    • 用curl语句在es中创建第一个索引(映射)
    • 用HighLevelClient创建第一个索引(映射)

写在开头

大学毕业入职半年的菜鸡第一篇博客,多次在项目中简单使用过es,es的介绍和故事等随处可见,不再赘述,官方的地址贴在这里,废话不多说,直接进入正题。

官方文档:《Elasticsearch 权威指南》中文版

注意:官方文档基于es2,本文基于es7

es创始人Shay Banon的故事点这里

开箱即用的elasticsearch

es官方下载地址
kibana官方下载地址

windows下为例(环境变量中请配置好JAVA_HOME):
下载解压后双击/bin/elasticsearch.bat即可启动es,访问地址:localhost:9200,出现以下信息为访问成功!
【自学elasticsearch7】结合es语法和java的HighLevelClient:索引(映射)创建_第1张图片
下载解压后双击/bin/kibana.bat即可启动kibana,访问地址:localhost:5601

【自学elasticsearch7】结合es语法和java的HighLevelClient:索引(映射)创建_第2张图片
注:如果需要本地kibana连接其它服务器的es,可修改/bin/config/kibana.yml的elasticsearch.hosts: [“服务器地址:9200”]

如需安装ik中文分词器可参考ik分词器安装

用curl语句在es中创建第一个索引(映射)

PUT /firstmapping
{
  "mappings": {
    "properties": {
      "title":{
        "type":"keyword"
      },
      "content":{
        "type": "text"
      },
      "score":{
        "type": "double"
      }  
    }
  }
}

其中mapping定义该语句为一条映射语句,properties下填写索引的字段名(title,content,score),type为字段的类型(从es5开始不再支持string类型,将string类型拆分为text和keyword,其中keyword类型字段不可进行分词搜索)

es的常用类型如下:
(1)字符串:

  • text 于全索引,搜索时会自动使用分词器进分词再匹配
  • keyword 不分词,搜索时需要匹配完整的值

(2)数值型

  • 整型: byte,short,integer,long
  • 浮点型: float, half_float, scaled_float,double

(3)日期类型

  • date

其它的类型可以参考这里,不再赘述:常用类型参考

用HighLevelClient创建第一个索引(映射)

导入es7的依赖:

 
 		
        7.13.0
 
 
	 
            org.elasticsearch.client
            elasticsearch-rest-high-level-client
            7.13.0
        
        
            org.elasticsearch.client
            elasticsearch-rest-client
            7.13.0
        
        
            org.elasticsearch
            elasticsearch
            7.13.0
        
 

创建client配置类:

@Configuration
public class Client {

    @Value("${es.url}") //可在配置文件中添加添加多个es地址,配置es集群
    private String esUrl;

    @Bean
    RestHighLevelClient configRestHighLevelClient() throws Exception{
        String[] esUrls = esUrl.split(",");
        List httpHosts = new ArrayList<>();
        for (String url : esUrls) {
            String[] esPort = url.split(":");
            httpHosts.add(new HttpHost(esPort[0],Integer.parseInt(esPort[1]),"http"));
        }
        return new RestHighLevelClient(
                RestClient.builder(httpHosts.toArray(new HttpHost[0]))
        );
    }
}

创建映射的主要代码:

  XContentBuilder builder = XContentFactory.jsonBuilder();
            builder.startObject();
            {
                builder.startObject("mappings");
                {
                    builder.startObject("properties");
                    {
                            builder.startObject("title");
                            {
                                builder.field("type", "keyword");
                            }
                            builder.endObject();
                      		 builder.startObject("content");
                            {
                                builder.field("type", "text");
                            }
                            builder.endObject();
                             builder.startObject("score");
                            {
                                builder.field("type", "double");
                            }
                            builder.endObject();
 
                    }
                    builder.endObject();
                }
                builder.endObject();
            }
            builder.endObject();
            CreateIndexRequest index = new CreateIndexRequest("secondmapping");
            index.source(builder);
            client.indices().create(index, RequestOptions.DEFAULT);

你可能感兴趣的:(java,elasticsearch,java,搜索引擎,jvm,开发语言)