首页 > 移动平台 > 详细

4.elasticsearch-mapping

时间:2021-08-18 10:26:06      阅读:38      评论:0      收藏:0      [点我收藏+]

mapping

Mapping是定义Document及其包含的field如何存储和索引的过程。例如,使用mapping来定义:

  • 哪些字符串字段应被视为全文字段。
  • 哪些字段包含数字、日期或地理位置。
  • 文档中所有字段的值是否应该被索引到全部_all字段中。
  • 日期值 的格式
  • 自定义规则来控制动态添加字段的映射 。

mapping type

每个索引都包含一个mapping type,用来决定document如何被索引

索引类型包括:

  • Meta-fields

    Meta-fields 用于自定义如何处理文档的相关元数据。Meta-fields的例子 包括 _index, _type, _id, and _source 字段。

  • Fields or properties

    mapping 类型包含字段列表或properties与文档相关的字段列表

字段数据类型

每个字段都有一个数据type,可以是:

为了不同的目的以不同的方式索引相同的字段通常很有用。例如,一个string字段可以被索引为一个text用于全文搜索的keyword字段,以及一个用于排序或聚合的字段。或者,您可以使用standard分析器english分析器和 french分析器来索引字符串字段。

这就是多字段的目的。大多数数据类型通过fields参数支持多字段。

动态mapping

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

动态映射规则可经配置以定制用于新字段的映射。

analyser分词器

技术分享图片

index是否被索引

index可用户设置字段是否被索引,默认为true,false即为不可搜索

技术分享图片

null_value空值默认值

需要对Null值实现搜索时使用,只有keyword类型才支持设定null_value
技术分享图片

防止mapping爆炸

在索引中定义太多字段会导致映射爆炸,从而导致内存不足错误和难以恢复的情况。这个问题可能比预期的更常见。例如,考虑这样一种情况,其中插入的每个新文档都会引入新字段。这在动态映射中很常见。每次文档包含新字段时,这些字段都会在索引的映射中结束。对于少量数据,这并不令人担忧,但随着映射的增长,它可能会成为一个问题。以下设置允许您限制可以手动或动态创建的字段映射的数量,以防止不良文档导致映射爆炸:

index.mapping.total_fields.limit

索引中的最大字段数。默认值为1000

index.mapping.depth.limit

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

index.mapping.nested_fields.limit

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

更新现有字段mapping

除了记录在案的地方,现有的字段映射无法更新。更改映射意味着使已编入索引的文档无效。相反,你应该创建正确映射一个新的索引和reindex的数据转换成指数

mapping事例

curl -X PUT "localhost:9200/my_index?pretty" -H ‘Content-Type: application/json‘ -d‘ # 创建一个index(my_index)
{
  "mappings": {
    "doc": {  # 添加一个名为doc的类型
      "properties": { #指定字段或属性
        "title":    { "type": "text"  },  # 	
指定该title字段包含text值
        "name":     { "type": "text"  },  # 指定该name字段包含text值。
        "age":      { "type": "integer" },  # 指定该age字段包含integer值。
        "created":  { #指定该created字段包含date两种可能格式的值。
          "type":   "date", 
          "format": "strict_date_optional_time||epoch_millis"
        }
      }
    }
  }
}
‘

参考:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/mapping.html#mapping-limit-settings
https://www.bilibili.com/video/BV1x54y15775?p=11

4.elasticsearch-mapping

原文:https://www.cnblogs.com/xinbat/p/15154875.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!