7.索引库操作

发布于:2025-06-19 ⋅ 阅读:(15) ⋅ 点赞:(0)

mapping映射属性

mapping是对索引库中文档的约束

常见的mapping属性包括:

type 字段数据类型,常见的简单类型有:

        字符串:text(可分词的文本)  keyword(精确值,例如:品牌、国家,ip地址)

        数值:long integer short byte double float

        布尔:boolean

        日期:date

        对象:object,例如下面name字段的值就是一个json对象。

index 是否创建索引,默认为true,表示创建倒排索引,会参与到搜索。false表示不会创建倒排索引,不会参与搜索。

analyzer: 使用哪种分词器,跟上面type为text的字段结合使用。

properties:该字段的子字段。例如下面指定name字段的子属性firstName和lastName。

es没有数组类型,但是es中允许字段有多个值,所以支持存储数组数据。只需要关注数组中元素的类型就可以了。

{        

        "age": 22,

        "weight": 52.1,

        "isMarried": false,

        "info": "我是一个程序员,很有才华的哟",

        "email": "aaa@qq.com",

        "score": [99, 85, 77]

        "name": {

                "firstName": "云",

                "lastName": "赵"

        }

}

索引库的CRUD

1.创建索引库和mapping的DSL语句

# 创建索引库person,并定义字段mapping
PUT /person
{
  "mappings": {
    "properties": {
      "info": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email": {
        "type": "keyword",
        "index": "false"
      },
      "name": {
        "type": "object", 
        "properties": {
          "firstName": {
            "type": "keyword"
          },
          "lastName": {
            "type": "keyword"
          }
        }
      },
      "age": {
        "type": "integer"
      },
      "weight": {
        "type": "float"
      },
      "isMarried": {
        "type": "boolean"
      },
      "score": {
        "type": "integer"
      },
      "birthday": {
        "type": "date"
      }
      
    }
  }
}

 执行结果:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "person"
}

2.查询索引库

GET /person

3.删除索引库

delete /person

4.修改索引库

在es中可以允许添加新字段,只是禁止修改原字段。

PUT /person/_mapping
{
  "properties": {
    "heigh":{
      "type": "float"
    }
  }
}

{
  "acknowledged" : true
}


网站公告

今日签到

点亮在社区的每一天
去签到