美文网首页
ElasticSearch Mapping

ElasticSearch Mapping

作者: 白奕新 | 来源:发表于2019-12-14 21:33 被阅读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

  • doc_values:用来控制是否创建正排索引,会消耗磁盘空间
parameter meaning other
true 意味着这些字段都可以被聚合、排序 除了analyzed的string字段,doc_values都默认开启
false 这个字段不能用于聚合、排序 可以省下磁盘空间
  • index:用来控制是否创建倒排索引,会消耗内存

(1)低版本

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

(2)v5.0+

parameter meaning
true 能被搜索,default
false 不能被检索
  • store:用于指定字段是否存储。当_source开启的时候,默认即存储document的所有字段。当把_source关闭,即不需要存储所有字段时,可以通过配置这个字段显示指定要开启的字段。默认false。
  • fielddata:对于analyzed string/text 而言doc_values不支持,而是使用fielddata属性,会在第一次聚合/排序的时候把所有的倒排索引加载到内存中生成正排索引。
PUT mapping
{
  "mappings": {
    "my_type": {
      "properties": {
        "text": {
          "type": "string",
          "fielddata": {
            "format": "disabled/paged_bytes(开启,default)" 
          }
        }
      }
    }
  }
}
  • norms:存储了normalization factor(numbers to represent the relative field length and the index time boost setting) 用于计算分数。不适用score的可以把他关了。

(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默认开启。

  • index_options:参数用于决定倒排索引里面存储内容。"docs"代表倒排索引里面存储的是document id;"freqs"代表存储在docs的基础上多了词条频率的记录,当在用于打分的时候高词频的数据分数比较高;"positions"在"freqs"的基础上,多了词条的顺序的记录,用于proximity queries和phrase queries;"offset"在"positions"的基础上,多了起始/结束字符的偏移量,用于定位这个term在document中的位置。对于analyzed的string/text而言,默认值是offset,其他的默认值是docs。

相关文章

网友评论

      本文标题:ElasticSearch Mapping

      本文链接:https://www.haomeiwen.com/subject/tsphnctx.html