ElasticSearch Mapping

2019-12-14  本文已影响0人  白奕新

0、opeartion

{
    "order": 0,
    "index_patterns": "{INDEX-NAME}(可以写通配符)",
    "settings": {
        "index.refresh_interval": "60s"
    },
    "mappings": {
        "_source": {
            "enabled": false
        },
        "properties": {
            "is_hit_detail": {
                "type": "keyword",
                "doc_values": true
            },
            "isp_id": {
                "type": "keyword",
                "doc_values": true
            }
        }
    }
}

1、default mapping

从ES 5.x开始,索引级别的配置需要写到mapping中,而不是在elasticsearch.yml配置文件中。因此对于索引级别的全局配置信息,可以把这些信息编写到全局模板中。当模板匹配到多个的时候,会自动合并;当多个模板里面有相同的配置的时候,以order大的模板为准。

{
    "template":"*",
    "order":0,
    "settings":{
        "index.number_of_replicas":"1",
        "index.number_of_shards":24
    }
}

2、breaking change

string类型进行了修改

below v5.0 v5.0+
analyezed-string text
not_analyzed-string keyword

3、Mapping parameter

parameter meaning other
true 意味着这些字段都可以被聚合、排序 除了analyzed的string字段,doc_values都默认开启
false 这个字段不能用于聚合、排序 可以省下磁盘空间

(1)低版本

parameter meaning
not_analyzed 数据不分词,直接创建倒排索引。是除"String"以外的默认配置
no 字符字段表示不能被搜索,不建立倒排索引,节省内存使用。数值字段被设置为0,则sum的结果为0
analyzed 字段会被分词以后建立倒排索引。是"String"的默认配置

(2)v5.0+

parameter meaning
true 能被搜索,default
false 不能被检索
PUT mapping
{
  "mappings": {
    "my_type": {
      "properties": {
        "text": {
          "type": "string",
          "fielddata": {
            "format": "disabled/paged_bytes(开启,default)" 
          }
        }
      }
    }
  }
}

(1)低版本,存储在内存中。analyzed-string默认开启,not_analyezd-string默认关闭。

PUT mapping
{
  "mappings": {
    "my_type": {
      "properties": {
        "text": {
          "type": "string",
          "norms": {
            "enabled": "false/true(default)" 
          }
        }
      }
    }
  }
}

(2)在v5.0以后,norms改成了存储在磁盘中。配置也改成["norms":"true/false"]。keyword默认false,text默认开启。

上一篇下一篇

猜你喜欢

热点阅读