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

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

写在开头

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

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

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

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

开箱即用的elasticsearch

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

windows下为例(环境变量中请配置好JAVA_HOME):
下载解压后双击/bin/elasticsearch.bat即可启动es,访问地址:localhost:9200,出现以下信息为访问成功!
访问成功
下载解压后双击/bin/kibana.bat即可启动kibana,访问地址:localhost:5601

在这里插入图片描述
注:如果需要本地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的依赖:

 <properties>
 		<!--声明es版本,很重要!!!!-->
        <elasticsearch.version>7.13.0</elasticsearch.version>
 </properties>
 <dependencies>
	 <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.13.0</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.13.0</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.13.0</version>
        </dependency>
 </dependencies>

创建client配置类:

@Configuration
public class Client {

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

    @Bean
    RestHighLevelClient configRestHighLevelClient() throws Exception{
        String[] esUrls = esUrl.split(",");
        List<HttpHost> 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);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值