elasticsearch 6.3.2 mapping 详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wanglei_storage/article/details/82593828

https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html

一、mapping 说明

elasticsearch 是一个文档数据库,但是它也是有模式和概念的。文档中的每个字段仍然需要定义字段的类型,默认情况下,elasticsearch中的字段的值类型都是 string。那有些时候,我们可能需要特殊的数据类型,如:keyword、date、boolean、ip等,这些时候就需要 mapping 来定义数据的类型。

为不同的目的以不同的方式索引相同字段通常很有用。例如,string 可以将字段索引为 text 用于全文搜索的 keyword 字段,以及用于排序或聚合的字段。或者,你可以使用 standard 分词器、english 分词器和 french分词器,以及 simple 分词器索引字符串的字段。

二、基于索引映射的限制

在讨论映射的类型之前,我们先看看基于索引的时候每个索引的映射限制
在索引中定义太多字段是一种可能导致映射爆炸的情况,这可能导致内存不足错误和难以恢复的情况。这个问题可能比预期更常见。例如,考虑插入的每个新文档引入新字段的情况。这在动态映射中非常常见。每次文档包含新字段时,这些字段最终都会出现在索引的映射中。这并不需要担心少量数据,但随着映射的增长,它可能会成为一个问题。以下设置允许您限制可手动或动态创建的字段映射的数量,以防止错误的文档导致映射爆炸

1、映射字段数

索引中的最大字段数。默认值为1000(强烈建议索引中尽可能的少用字段数)

index.mapping.total_fields.limit: 1000

2、映射字段深度

字段的最大深度,以内部对象的数量来度量。例如,如果所有字段都是在根对象级别定义的,则深度为1。如果有一个对象映射,则深度为2,等等。默认值为20

index.mapping.depth.limit: 20

3、nested 最大字段数

nested 索引中的最大字段数,默认为50。使用100个嵌套字段索引1个文档实际上索引101个文档,因为每个嵌套文档都被索引为单独的隐藏文档。

index.mapping.nested_fields.limit: 50

三、映射的类型

1、动态映射

在使用之前不需要定义字段和映射类型。由于动态映射,只需索引文档即可自动添加新的字段名称。新字段既可以添加到顶级映射类型,也可以添加到内部 object 和 nested 字段。

该动态映射规则可经配置以定制于新字段的映射。官网:https://www.elastic.co/guide/en/elasticsearch/reference/6.3/dynamic-mapping.html

2、显式映射

你可以比 elasticsearch 更多的了解你的数据,因此虽然动态映射对于入门很有用,但在你某些时候你需要指定自己的显式映射。

你可以在创建索引时创建字段映射,也可以使用PUT API将字段添加到现有索引。官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html

显式映射示例:

PUT  url/_mapping/test
{
  "properties": {
    "url": {
      "type": "string",
      "fields": {
            "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
    },
    "date": {
      "type": "date"
    },
    "pvs": {
      "type": "integer"
    },
    "uvs": {
      "type": "integer"
    }
  }
}

在上面的例子中,url 需要有两个用途,一个是作为聚合的字段;另一个是需要做全文检索。在 ES 中全文检索的字段是不能用来做聚合的,因此使用嵌套字段的方式,新增一个 url.keyword 字段,这个字段设置成 keyword 类型,不采用任何分词;然后本身的 url 字段则采用默认的标准分词器进行分词。

猜你喜欢

转载自blog.csdn.net/wanglei_storage/article/details/82593828
今日推荐