ElasticSearch-mappings自定义创建映射

mappings自定义创建映射

es的映射就相当于编程语言中给变量定义类型,定义后的变量使用起来更高效,未定义的变量相较于定义的性能肯定是不如的。所以需要掌握es映射。

未定义映射es会对提供的数据进行类型猜测,如果对自动判断的类型及参数设置不满意,或者需要使用一些更高级的映射设置,那么就需要使用自定义映射。

添加映射格式:

curl -X PUT "localhost:9200/my_index?pretty" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "_doc": { 
      "properties": { 
        "title":    { "type": "text"  }, 
        "name":     { "type": "text"  }, 
        "age":      { "type": "integer" },  
        "created":  {
          "type":   "date", 
          "format": "strict_date_optional_time||epoch_millis"
        }
      }
    }
  }
}

中文翻译后的意思:

{
  "properties":{
    "字段名称":{
      "type":"字段类型",
      "store":"是否存储",
      "index":"索引方式、是否分析"
      ...
    }
  }
}'

mapping中字段可参考es官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.5/mapping.html

一个索引对应一个映射,一个索引下多个type无法对应多个映射的。7.0版本以后,索引下的type类型就弃用了。最主要原因为了提高性能

通过postman发送请求创建映射

http://192.168.145.131:9200/index_mapping

{
  "mappings": {
      "properties": {
        "name":{  
          "type": "text" 
        },
        "username":{
            "type":"keyword",
            "index":false
        }
      }
  }
}

ElasticSearch-mappings自定义创建映射
通过es-header查看索引信息,index为true可以做分词去查询
ElasticSearch-mappings自定义创建映射

查看分词效果(注意text和keyword的区别)

http://192.168.145.131:9200/index_mapping/_analyze

{
    "field":"name",
    "text":"i like apple"
}

ElasticSearch-mappings自定义创建映射

ElasticSearch-mappings自定义创建映射
某个属性一旦被建立,就不能修改了,但是可以新增额外属性
ElasticSearch-mappings自定义创建映射

为已存在的索引创建或创建mappings

ElasticSearch-mappings自定义创建映射

Elasticsearch-head可视化查看

ElasticSearch-mappings自定义创建映射

主要数据类型

text, keyword, string
long, integer, short, byte
double, float
boolean
date
object
数组不能混,类型一致

字符串

text:文字类需要被分词被倒排索引的内容,比如商品名称、商品详情、商品介绍,使用text。
keyword:不会被分词,不会被倒排索引,直接匹配搜索,比如订单状态、用户qq、微信号、手机号等,这些精确匹配,无需分词。

上一篇:Django 小实例S1 简易学生选课管理系统 6 实现登录逻辑


下一篇:Kubeflow连接云计算与机器学习