当前位置:   article > 正文

ElasticSearch 实战:配置ES的映射 (mapping)_elasticsearchoperations 设置mapping

elasticsearchoperations 设置mapping

Elasticsearch中,映射(mapping)是用于定义索引中字段(field)的结构和行为的重要组成部分。映射决定了如何分析文本、如何存储数值、日期以及其他复杂类型的数据。下面是一些实战中配置Elasticsearch映射的基本步骤和要点:

创建映射前的准备工作:

  1. 理解字段类型

    • Elasticsearch支持多种数据类型,如string (textkeyword)、numeric(整数、浮点数)、booleandateobjectnestedgeo_pointgeo_shape等。
  2. 决定是否启用动态映射

    • 动态映射可以根据插入文档的结构自动创建映射。默认情况下,Elasticsearch启用动态映射。
      • dynamic: true - 自动添加新字段并根据内容推断类型。
      • dynamic: false - 忽略新字段,需要手动定义所有映射。
      • dynamic: strict - 当遇到未定义的新字段时,拒绝索引文档。

手动创建映射示例:

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": { 
        "type": "text",
        "analyzer": "standard"
      },
      "content": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      },
      "author": {
        "type": "keyword"
      },
      "post_date": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
      },
      "tags": {
        "type": "nested",
        "properties": {
          "name": {
            "type": "text"
          },
          "category": {
            "type": "keyword"
          }
        }
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 在上述示例中,我们创建了一个名为my_index的索引,并定义了其映射结构。
  • title字段被定义为text类型,并使用标准分析器。
  • content字段包含一个子字段keyword以支持全文搜索和精确匹配。
  • author字段作为keyword处理,便于排序或聚合操作。
  • post_date是一个日期类型,指定了多种格式以便解析不同格式的日期字符串。
  • tags是一个嵌套(nested)对象,它内部有自己的属性映射。

动态映射调整:

若要调整动态映射的行为,可以在索引级别或字段级别指定动态映射规则:

PUT /my_index
{
  "mappings": {
    "dynamic": "strict", // 或 "false"
    "properties": {
      "custom_field": {
        "type": "text",
        "dynamic": "true" // 即使全局动态映射关闭,此字段仍允许动态添加
      }
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注意事项:

  • 映射一旦创建并有文档被索引后,通常不可更改字段类型,除非重新创建索引。
  • 对于特定场景如地理位置信息或自定义分析器,需要准确地配置映射。
  • 使用动态映射虽然方便,但可能会导致意外的映射创建,特别是对于复杂数据结构或者需要特殊处理的字段,建议采用手动映射以确保一致性与准确性。

使用客户端库(如Nest)创建映射:

如果你使用的是像Nest这样的客户端库,可以通过编写类映射(Poco Mapping)的方式来声明索引的映射结构,并通过客户端API将其发送到Elasticsearch服务器上创建或更新映射。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/860859
推荐阅读
相关标签
  

闽ICP备14008679号