文档

时序索引管理

在时序日志场景的ES Serverless应用中,您可以使用索引管理功能管理您的索引,例如创建、修改、删除索引等。

前提条件

已创建时序日志场景的应用。具体操作,请参见创建应用

时序日志场景下的索引特点

  • 索引中的字段均会采用时序日志场景的最佳实践:

    • 索引只支持检索,不支持算分(对文档的相关性进行评估)。

    • 检索时会忽略索引字段中的大小写。

    • text类型的字段,不支持通配符查询。

    • 默认分词下,单个词长度不超过255个字符。

  • 索引不支持按id进行读写,返回的id也没有实际意义。

  • 各个字段及数组内字段的顺序会变化,对字段顺序有依赖的请谨慎使用。

  • 部分类型的字段格式会发生改变,例如时间字段、带引号的数字等。解决格式变化的方法如下:

    • 时间字段:指定时间字段的format。

    • 带引号的数字:写入时不带引号。

    • 使用科学计数法存储数值型的double、long类型字段:对double、long 类型不进行科学计数法格式数据存储。

创建索引

  1. 登录阿里云Elasticsearch控制台
  2. 在左侧导航栏,单击Elasticsearch Serverless版本

    说明

    如果您所在的地域没有Elasticsearch Serverless服务,请在顶部菜单栏切换地域。

  3. Elasticsearch Serverless服务控制台的左侧导航栏,单击应用管理

  4. 应用管理页面,单击目标应用名称。

  5. 在左侧导航栏,选择数据管理 > 索引列表

  6. 单击创建索引

  7. 创建索引面板,填写索引配置信息。

    项目

    描述

    索引名称

    自定义的索引名称需满足以下条件:

    • 长度为1~128个字节。

    • 不支持中文。

    • 不能以 - _ + .开头。

    • 不能包含大写字母和whitespace\/ * ? " < > | # : ,等特殊符号。

    动态字段识别

    开启动态字段识别开关后,当索引接收到包含新字段的文档时,会根据新字段的数据类型,自动更新索引的映射。

    • 开启动态字段识别开关,即将索引的dynamic字段值设置为true。

    • 关闭动态字段识别开关,即将索引的dynamic字段值设置为false。

    说明
    • 新字段为text类型时,默认采用lineAnalyzer。

    • 对默认text类型字段进行match_phrase查询时会有查询截断行为,可能导致查询结果不准确。

    字段映射

    • 手动设置索引的字段映射。

      • 字段名称:用户可自定义索引数据的字段名称。

      • 字段类型:六种字段的数据类型可供选择:boolean、keyword、long、double、date、text。如果您需要设置更多的字段类型,可以切换至JSON编辑模式中编辑。支持的字段类型,请参见 Field data types

      • 开启索引:默认开启。启用后会对该字段构建索引,字段可用于检索。

      • 开启统计:默认开启,且暂不支持关闭。启用后支持对字段值做统计分析,但会增加索引存储空间。

        说明

        text字段类型不支持开启统计。

      • 分词符:text字段类型支持编辑分词符,分词符的作用是将字段内容拆分成多个词。默认的分词符为whitespace'";=()[]{}?@&<>/:\n\t\r#\|,

    • 通过输入样例自动配置生成索引的字段映射。

      单击输入样例自动配置,在输入框内输入JSON格式的数据,单击确定,平台校验无误后,自动将字段映射到字段映射表中。

      JSON格式的数据样例:

      {
        "bool_field": true,
        "date_field": "20220126",
        "keyword_field": "这是一行不需要分词的文本",
        "text_field": "这是一行需要分词的文本,文本长度超过36个字符的会被推断为需要分词,定义为text类型"
      }
    • JSON模式下设置字段映射。

      字段映射区域的右上角,单击切换至JSON 编辑模式在JSON模式下编辑字段映射。

      说明

      切换模式时,配置信息将自动在两种模式间进行同步。

      JSON示例:

      {
        "settings": {
          "index": {
            "sort": {
              "field": [
                "date_field"
              ],
              "order": [
                "desc"
              ]
            }
          }
        },
        "mappings": {
          "dynamic": true,
          "properties": {
            "bool_field": {
              "type": "boolean",
              "doc_values": true,
              "index": true
            },
            "date_field": {
              "format": "basic_date",
              "type": "date",
              "doc_values": true,
              "index": true
            },
            "keyword_field": {
              "type": "keyword",
              "doc_values": true,
              "index": true
            },
            "text_field": {
              "type": "text",
              "analyzer": "lineAnalyzer",
              "doc_values": false,
              "index": true,
              "term_hash_enable": true
            }
          }
        }
      }

    时间字段

    选择用于记录数据时间的字段,字段类型需为date类型。

    说明

    索引创建完成后,不支持修改和删除时间字段。

    时间格式

    时间字段支持ES的默认格式,请参见Date field type

    数据保存时间

    • 限时保存:保存索引数据的时间,可选范围为1~365天。

    • 永久保存:永久保存索引数据。

  8. 单击确认。

索引数据写入和查询

  1. 登录Serverless应用的Kibana控制台。具体操作,请参见通过Kibana使用Serverless应用

  2. 在页面左上角单击菜单.png图标,选择Management > Dev Tools

  3. 您可以执行以下代码对索引进行操作。

    • 查看索引映射详情:

      GET test/_mapping

      返回结果:

      {
        "test": {
          "mappings": {
            "dynamic": true,
            "dynamic_templates": [
              {
                "match_tag": {
                  "mapping": {
                    "analyzer": "lineAnalyzer",
                    "type": "match_only_text",
                    "term_hash_enable": true
                  },
                  "match_mapping_type": "string",
                  "match": "*"
                }
              }
            ],
            "properties": {
              "bool_field": {
                "index": true,
                "type": "boolean",
                "doc_values": true
              },
              "keyword_field": {
                "index": true,
                "type": "keyword",
                "doc_values": true
              },
              "text_field": {
                "analyzer": "lineAnalyzer",
                "index": true,
                "type": "text",
                "term_hash_enable": true,
                "doc_values": false
              },
              "date_field": {
                "format": "basic_date",
                "index": true,
                "type": "date",
                "doc_values": true
              }
            }
          }
        }
      }
    • 索引中插入数据:

      POST test/_bulk
      { "index" : {} }
      {"bool_field":true,"date_field":"20220126","keyword_field":"Elasticsearch Serverless","text_field":"Elasticsearch Serverless服务可以为您提供简单易用、弹性灵活、开箱即用的Elasticsearch产品体验,您无须管理Elasticsearch集群资源及配置。"}

      返回结果:

      {
        "took" : 8,
        "errors" : false,
        "items" : [
          {
            "index" : {
              "_index" : ".ts@test@20240625132819",
              "_type" : "_doc",
              "_id" : "JAz-TZABtubVNy3ji6Je",
              "_version" : 1,
              "result" : "created",
              "_shards" : {
                "total" : 2,
                "successful" : 2,
                "failed" : 0
              },
              "_seq_no" : 0,
              "_primary_term" : 1,
              "status" : 201
            }
          }
        ]
      }
    • 查询索引中的数据:

      GET test/_search
      {
         "query": {
         "match": {
           "keyword_field": "Elasticsearch Serverless"
           }
         }
      }

      返回结果:

      {
        "took" : 32,
        "timed_out" : false,
        "_shards" : {
          "total" : 6,
          "successful" : 6,
          "skipped" : 0,
          "failed" : 0
        },
        "hits" : {
          "total" : {
            "value" : 1,
            "relation" : "eq"
          },
          "max_score" : 0.6931471,
          "hits" : [
            {
              "_index" : ".ts@test@20240625132819",
              "_type" : "_doc",
              "_id" : "f_5UXuTZABDK8p0Q9xETMU",
              "_score" : 0.6931471,
              "_source" : {
                "text_field" : "Elasticsearch Serverless服务可以为您提供简单易用、弹性灵活、开箱即用的Elasticsearch产品体验,您无须管理Elasticsearch集群资源及配置。",
                "keyword_field" : "Elasticsearch Serverless",
                "bool_field" : true,
                "date_field" : "20220126"
              }
            }
          ]
        }
      }

管理索引

您可以在应用的索引列表页面,管理索引配置。

项目

说明

查看索引配置

在目标索引的操作列,单击修改配置,查看索引的具体配置。

修改索引配置

在目标索引的操作列,单击修改配置,修改索引的配置。

  • 索引字段的修改会触发自动rollover,相关字段配置会在后续新增的索引数据中生效,已有的索引数据不会更新。

  • 索引名称、 时间字段不支持修改。

删除索引

在目标索引的操作列,单击删除,删除索引。