es 基础概念总结 —— 映射

索引 index

创建索引

PUT test/_doc/1 

{ "count": 5, "date": "2015/09/02" }

 

查看索引

GET _cat/indices?v

 

发现当前索引状态为 yellow, 副本数 rep是 1。这是由于单机状态不需要设置副本,因此将其改成 0 就正常了。

PUT test/_settings
{ "number_of_replicas": 0}

 

 删除索引

DELETE test

 

查看映射

GET test/_mapping

 

 

映射 mapping

作用:

  • 定义字段名称与数据类型
  • 定义索引规则(是否被索引,采用的 analyzer

示例

PUT data/_doc/1 
{ "count": 5, "date": "2015/09/02" }

GET data/_mapping

创建了 data 索引,映射类型为 _doc, 字段 count 的数据类型为 long

{
  "data" : {
    "mappings" : {
      "properties" : {
        "count" : {
          "type" : "long"
        },
        "date" : {
          "type" : "date",
          "format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis"
        }
      }
    }
  }
}

 

1.数据类型如何动态映射?

日期检测(默认启用)

 禁用

PUT my_index
{
  "mappings": {
    "date_detection": false
  }
}

 自定义映射格式

PUT my_index
{
  "mappings": {
    "dynamic_date_formats": ["MM/dd/yyyy"]
  }
}

数字检测(默认禁用)

PUT my_index
{
  "mappings": {
    "numeric_detection": true
  }
}

PUT my_index/_doc/1
{
  "my_float":   "1.0", 
  "my_integer": "1" 
}

新增字段的处理

可设为 true false strict

PUT dynamic_mapping_test/_mapping
{
  "dynamic": false
}

其中,false 不可被检索, strict 不可插入新值

 

2.索引具体字段的规则?

index 为 false 

PUT users
{
  "mappings": {
    "properties": {
      "firstName": {
        "type": "text"
      },
      "lastName": {
        "type": "text"
      },
      "mobile": {
        "type": "text",
        "index": false
      }
    }
  }
}

null_value

PUT users
{
  "mappings": {
    "properties": {
      "firstName": {
        "type": "text"
      },
      "lastName": {
        "type": "text"
      },
      "mobile": {
        "type": "keyword",
        "null_value": "NULL"
      }
    }
  }
}

PUT users/_doc/1
{
  "firtName": "si",
  "lastName": "li",
  "mobile": null
}

POST users/_search
{
  "query": {
    "match": {
      "mobile": "NULL"
    }
  }
}

copy_to

PUT users
{
  "mappings": {
    "properties": {
      "firstName": {
        "type": "text",
        "copy_to": "fullName"
      },
      "lastName": {
        "type": "text",
        "copy_to": "fullName"
      }
    }
  }
}

PUT users/_doc/1
{
  "firtName": "si",
  "lastName": "li"
}

GET users/_search?q=fullName:(li si)

POST users/_search
{
  "query": {
    "match": {
      "fullName": {
        "query": "li si",
        "operator": "and"
      }
    }
  }
}

 

 

233

参考资料


https://www.elastic.co/guide/en/elasticsearch/reference/7.6/dynamic-mapping.html

posted on 2020-03-17 09:41  Lemo_wd  阅读(436)  评论(0编辑  收藏  举报

导航