ElasticSearch入门三:映射操作

342 阅读2分钟

「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

系列文章:

一、ElasticSearch映射的基本操作

当我们创建了索引,就相当于创建了数据库。 创建好了文档,我们的表和数据就准备好了。 在使用关系型数据库的时候,我们有时候会改动表结构,例如字段的数据类型,字段值长度或列名称等。索引库也一样,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。

1.1 创建映射

使用PUT请求创建映射

PUT http://127.0.0.1:9200/student/_mapping
{
  "properties": {
    "name":{
      "type": "text",
      "index": true
    },
    "sex":{
      "type": "text",
      "index": false
    },
    "age":{
      "type": "long",
      "index": false
    }
  }
}

映射数据说明:

  • 字段名:任意填写,下面指定许多属性,例如:title、subtitle、images、price

  • type:类型,Elasticsearch中支持的数据类型非常丰富,几个比较关键的:

    • String类型,又分两种:

      • text:可分词

      • keyword:不可分词,数据会作为完整字段进行匹配

    • Numerical:数值类型,分两类。

      • 基本数据类型:long、integer、short、byte、double、float、half_float
      • 浮点数的高精度类型:scaled_float
    • Date:日期类型

    • Array:数组类型

    • Object:对象

  • index:是否索引,默认为true,也就是说你不进行任何配置,所有字段都会被索引。

    true:字段会被索引,则可以用来进行搜索

    false:字段不会被索引,不能用来搜索

  • store:是否将数据进行独立存储,默认为false

    原始的文本会存储在_source里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source里面提取出来的。当然你也可以独立的存储某个字段,只要设置"store": true即可,获取独立存储的字段要比从_source中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置。

  • analyzer:分词器,这里的ik_max_word即使用ik分词器

1.2 查看映射

使用GET请求查看映射

GET http://127.0.0.1:9200/student/_mapping

返回结果:

{
    "student":{
        "mapping":{
            "age":{
                "type":"long",
                "index":false
            },
            "name":{
                "type":"text"
            },
            "age":{
                "type":"text",
                "index":false
            }
        }
    }
}

1.3 索引映射关联

使用PUT,将索引跟映射关联起来

PUT http://127.0.0.1:9200/student
{
  "settings": {},
  "mappings": {
      "properties": {
        "name":{
          "type": "text",
          "index": true
        },
        "sex":{
          "type": "text",
          "index": false
        },
        "age":{
          "type": "long",
          "index": false
        }
      }
  }
}