创建索引

在Serverless日志分析型应用中,您可以通过可视化方式管理您的索引,例如创建、修改、删除索引等。本文介绍创建索引的方法,并介绍如何在索引中写入数据并进行数据查询。

前提条件

已创建日志分析型应用。具体操作,请参见创建日志分析型应用

索引特点

日志分析型应用中的索引特点如下:

  • 索引内置分片自动调优、智能滚动功能,您无需关注索引滚动、别名等复杂操作,读写时仅需指定索引名称。

  • 索引中的字段均采用以下规定:

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

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

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

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

  • 未开启主键写入时,索引不支持按id进行读写,返回的id也没有实际意义。

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

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

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

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

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

创建索引

  1. 登录Elasticsearch Serverless服务控制台

  2. 在顶部菜单栏,选择目标地域。

    说明

    目前仅支持华东1(杭州)、华北2(北京)、华东2(上海)和华南1(深圳)地域。

  3. 在左侧导航栏,单击应用管理

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

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

  6. 单击创建索引

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

    大类

    项目

    描述

    基础配置

    索引名称

    自定义的索引名称。

    字段映射

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

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

      • 字段类型:可供选择的数据类型包括boolean、long、double、keyword、text、date、object、match_only_text。如果您需要设置更多的字段类型,可以切换至JSON编辑模式中编辑。

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

      • 开启统计:暂不支持修改该配置。开启统计后支持对字段值做统计分析,但会增加索引存储空间。

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

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

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

      JSON格式的数据样例:

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

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

      说明

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

      JSON示例:

      {
        "settings": {
          "index": {
            "apack": {
              "protection": {
                "index": {
                  "forbid_id": true
                }
              }
            },
            "merge_dynamic_fields": {
              "enable": false
            },
            "timeseries": {
              "expiration_days": 7,
              "advanced_indexing_optimization": {
                "enabled": true
              },
              "auto_data_organization": {
                "enabled": true
              }
            },
            "sort": {
              "field": [
                "date_field"
              ],
              "order": [
                "desc"
              ]
            }
          }
        },
        "mappings": {
          "dynamic": "true",
          "properties": {
            "bool_field": {
              "type": "boolean",
              "doc_values": true,
              "index": true
            },
            "date_field": {
              "type": "date",
              "format": "basic_date",
              "doc_values": true,
              "index": true
            },
            "double_field": {
              "type": "double",
              "doc_values": true,
              "index": true
            },
            "keyword_field": {
              "type": "keyword",
              "doc_values": true,
              "index": true
            },
            "long_field": {
              "type": "long",
              "doc_values": true,
              "index": true
            },
            "object_field": {
              "type": "object",
              "properties": {
                "sub_field": {
                  "type": "long",
                  "doc_values": true,
                  "index": true
                }
              }
            },
            "text_field": {
              "type": "text",
              "analyzer": "lineAnalyzer",
              "doc_values": false,
              "index": true,
              "term_hash_enable": true
            }
          }
        }
      }

    时间字段

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

    说明

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

    数据保存时间

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

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

    高级配置

    带主键写入

    开启后,写入CU及存储空间都会显著增加,更新文档时可能出现更新失败或重复写入文档的情况。

    自动数据整理

    开启后,定期通过无损的force merge对索引进行整理,提升查询性能和优化存储空间,但会带来额外的写入CU消耗。

    说明

    force merge操作带来的资源消耗可以在监控中心查看。

    写入深度优化

    开启后,会自动调整索引结构,对索引的写入性能及存储成本有明显优化。但存在使用限制,如不支持前缀查询等,具体信息请参见写入深入优化

    动态字段配置

    索引接收到的写入字段不在字段映射中的处理方式:

    • 识别:根据新字段的数据类型,自动添加到字段映射中。

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

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

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

    • 合并:不添加到字段映射中,合并到@_all_@。

    • 忽略:不做任何处理,仅在原文中保留。

    • 报错:检测到新字段时抛出异常。

  8. 单击确定

索引数据写入和查询

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

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

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

    • 查看索引映射详情:

      GET test/_mapping

      返回结果:

      {
        "test" : {
          "mappings" : {
            "dynamic" : "true",
            "_meta" : {
              "app_id" : "qning-***",
              "index_name" : "test"
            },
            "dynamic_templates" : [
              {
                "match_tag" : {
                  "match" : "*",
                  "match_mapping_type" : "string",
                  "mapping" : {
                    "analyzer" : "lineAnalyzer",
                    "term_hash_enable" : true,
                    "type" : "match_only_text"
                  }
                }
              }
            ],
            "properties" : {
              "bool_field" : {
                "type" : "boolean"
              },
              "date_field" : {
                "type" : "date",
                "format" : "basic_date"
              },
              "double_field" : {
                "type" : "double"
              },
              "keyword_field" : {
                "type" : "keyword",
                "term_hash_enable" : true
              },
              "long_field" : {
                "type" : "long"
              },
              "object_field" : {
                "properties" : {
                  "sub_field" : {
                    "type" : "long"
                  }
                }
              },
              "text_field" : {
                "type" : "match_only_text",
                "analyzer" : "lineAnalyzer",
                "term_hash_enable" : true
              }
            }
          }
        }
      }
      
    • 索引中插入数据:

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

      返回结果:

      {
        "took" : 20,
        "errors" : false,
        "items" : [
          {
            "index" : {
              "_index" : ".ts@test@20240920170712",
              "_type" : "_doc",
              "_id" : "3yewDpIBzu2YeHCV92dK",
              "_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" : 39,
        "timed_out" : false,
        "_shards" : {
          "total" : 6,
          "successful" : 6,
          "skipped" : 0,
          "failed" : 0
        },
        "hits" : {
          "total" : {
            "value" : 1,
            "relation" : "eq"
          },
          "max_score" : 0.2876821,
          "hits" : [
            {
              "_index" : ".ts@test@20240920170712",
              "_type" : "_doc",
              "_id" : "f_J2uxDpIBBqbPspEIglF4",
              "_score" : 0.2876821,
              "_source" : {
                "object_field" : {
                  "sub_field" : 2023
                },
                "text_field" : "Elasticsearch Serverless服务可以为您提供简单易用、弹性灵活、开箱即用的Elasticsearch产品体验,您无须管理Elasticsearch集群资源及配置。",
                "bool_field" : true,
                "long_field" : 126,
                "double_field" : 3.14,
                "keyword_field" : "Elasticsearch Serverless",
                "date_field" : "20230901"
              }
            }
          ]
        }
      }

其他操作

您可以在应用的索引列表页面,查看、修改索引配置,或删除索引。

项目

说明

查看索引配置

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

修改索引配置

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

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

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

删除索引

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