Skip to content

在Elasticsearch中,_settings_mapping是两个不同的API端点,用于获取或修改索引的不同方面的信息。以下是它们的区别:

1. _settings 端点

  • 用途:用于获取或修改索引的配置设置
  • 包含的信息
    • 索引的分片数(number_of_shards)和副本数(number_of_replicas)。
    • 索引的刷新间隔(refresh_interval)。
    • 分析器(analysis)配置。
    • 索引的读写权限设置(blocks.read_onlyblocks.write等)。
    • 其他与索引性能、存储相关的参数。
  • 示例
    bash
    GET {{elasticsearchUrl}}/knowledge/_settings?pretty
    GET {{elasticsearchUrl}}/knowledge/_settings?pretty
    返回示例:
    json
    {
      "knowledge": {
        "settings": {
          "index": {
            "number_of_shards": "1",
            "number_of_replicas": "1",
            "refresh_interval": "1s",
            ...
          }
        }
      }
    }
    {
      "knowledge": {
        "settings": {
          "index": {
            "number_of_shards": "1",
            "number_of_replicas": "1",
            "refresh_interval": "1s",
            ...
          }
        }
      }
    }

2. _mapping 端点

  • 用途:用于获取或修改索引的数据结构定义(即字段的映射)。
  • 包含的信息
    • 索引中的字段名称及其数据类型(如textkeyworddateinteger等)。
    • 字段的分析器(如analyzersearch_analyzer)。
    • 是否允许动态映射(dynamic)。
    • 多字段(fields)配置。
    • 嵌套字段(nested)或对象字段(object)的结构。
  • 示例
    bash
    GET {{elasticsearchUrl}}/knowledge/_mapping?pretty
    GET {{elasticsearchUrl}}/knowledge/_mapping?pretty
    返回示例:
    json
    {
      "knowledge": {
        "mappings": {
          "properties": {
            "title": {
              "type": "text",
              "analyzer": "standard"
            },
            "created_at": {
              "type": "date"
            },
            ...
          }
        }
      }
    }
    {
      "knowledge": {
        "mappings": {
          "properties": {
            "title": {
              "type": "text",
              "analyzer": "standard"
            },
            "created_at": {
              "type": "date"
            },
            ...
          }
        }
      }
    }

主要区别

特性_settings_mapping
作用管理索引的物理存储和性能配置。定义索引中字段的数据结构和类型。
修改频率通常初始化时设置,后续较少变动。可能随业务需求调整字段类型或属性。
影响范围影响索引的分片、副本、性能等。影响数据的查询、聚合和分析行为。
动态调整支持部分参数可动态更新(如refresh_interval)。已有字段的映射通常不能修改(需重建索引)。

常见操作

  • 如果需要调整索引的分片数或副本数,使用_settings
  • 如果需要新增字段或修改字段类型,使用_mapping(注意:已存在的字段映射通常不可直接修改,需通过重建索引或别名切换实现)。

结合使用

在实际场景中,_settings_mapping可能需要配合使用。例如:

  1. 创建一个新索引时,先通过_settings配置分片和副本。
  2. 然后通过_mapping定义字段结构。
  3. 后续根据性能需求调整_settings,或通过_mapping扩展新字段。